1
00:00:01,110 --> 00:00:02,620
<v ->So in this lecture,</v>

2
00:00:02,620 --> 00:00:06,623
we will finish implementing the bookmarking functionality.

3
00:00:08,010 --> 00:00:10,860
And remember that basically the only thing

4
00:00:10,860 --> 00:00:12,600
that is still missing

5
00:00:12,600 --> 00:00:15,703
is that when we bookmark a recipe like this,

6
00:00:15,703 --> 00:00:18,810
then we want that recipe to show up here

7
00:00:18,810 --> 00:00:20,880
in the bookmarks panel.

8
00:00:20,880 --> 00:00:23,200
So right now that is still empty

9
00:00:23,200 --> 00:00:26,810
and we only see this friendly message here.

10
00:00:26,810 --> 00:00:29,103
And so let's now go fix that.

11
00:00:30,410 --> 00:00:34,040
So taking a look at or mark up here,

12
00:00:34,040 --> 00:00:39,040
we can see right here,

13
00:00:40,000 --> 00:00:41,963
so we can see that in the bookmarks,

14
00:00:42,940 --> 00:00:46,653
we will actually have also the preview element.

15
00:00:47,770 --> 00:00:49,770
So this one here,

16
00:00:49,770 --> 00:00:52,260
so basically a list element

17
00:00:52,260 --> 00:00:54,410
with the class of preview in it,

18
00:00:54,410 --> 00:00:58,260
just like we had here for the search results.

19
00:00:58,260 --> 00:01:01,960
And so this is actually the exact same code.

20
00:01:01,960 --> 00:01:05,700
And so now in order to create this bookmarks view,

21
00:01:05,700 --> 00:01:08,200
I can actually simply go ahead

22
00:01:08,200 --> 00:01:11,783
and copy this one here from the results.

23
00:01:13,187 --> 00:01:14,150
Okay.

24
00:01:14,150 --> 00:01:15,950
So at least for now,

25
00:01:15,950 --> 00:01:18,780
by the end of this video we will then kind

26
00:01:18,780 --> 00:01:20,600
of refactor all this,

27
00:01:20,600 --> 00:01:22,850
but for now let me simply copy the code here.

28
00:01:23,950 --> 00:01:27,820
And here create the bookmarksView.js.

29
00:01:33,080 --> 00:01:34,463
And then here of course,

30
00:01:35,860 --> 00:01:37,980
it is called BookmarksView.

31
00:01:42,600 --> 00:01:43,433
Okay.

32
00:01:43,433 --> 00:01:46,720
Then we also need to change the parent element,

33
00:01:46,720 --> 00:01:48,420
which in this case will be

34
00:01:48,420 --> 00:01:51,913
this unordered list called Bookmarks_List,

35
00:01:54,540 --> 00:01:58,399
right here and here.

36
00:01:58,399 --> 00:02:03,399
The error message should be no bookmarks yet,

37
00:02:06,600 --> 00:02:11,593
find a nice recipe and bookmark it.

38
00:02:16,480 --> 00:02:17,430
All right.

39
00:02:17,430 --> 00:02:19,360
But the rest of the code here

40
00:02:19,360 --> 00:02:21,303
is actually going to be the same.

41
00:02:22,280 --> 00:02:23,823
And so let's now go here.

42
00:02:24,791 --> 00:02:26,450
This one we can close.

43
00:02:26,450 --> 00:02:28,570
That's no good to the controller

44
00:02:28,570 --> 00:02:31,230
and include that here.

45
00:02:31,230 --> 00:02:33,640
And let's actually do that below this one,

46
00:02:33,640 --> 00:02:35,863
just because it is so similar.

47
00:02:37,150 --> 00:02:41,000
So results and bookmarks

48
00:02:42,840 --> 00:02:45,310
or actually let's do it here at the end,

49
00:02:45,310 --> 00:02:49,420
so that results and pagination stay together.

50
00:02:49,420 --> 00:02:51,700
And so now all we want to do

51
00:02:51,700 --> 00:02:55,760
at least for now is that whenever a new bookmark is added,

52
00:02:55,760 --> 00:02:58,230
we want to render the bookmarks view

53
00:02:58,230 --> 00:03:00,290
with all the bookmarks.

54
00:03:00,290 --> 00:03:02,493
So with the array of bookmarks.

55
00:03:03,550 --> 00:03:08,043
So is right here in controlAddBookmarks ,

56
00:03:11,820 --> 00:03:13,620
delete all these console.logs

57
00:03:14,750 --> 00:03:17,080
and as always add some comments.

58
00:03:17,080 --> 00:03:22,080
So add or remove a bookmark,

59
00:03:22,830 --> 00:03:23,773
then here,

60
00:03:27,290 --> 00:03:30,433
update recipe view.

61
00:03:32,540 --> 00:03:35,347
And then here actually render to bookmarks.

62
00:03:38,170 --> 00:03:42,000
So that is bookmarksView.render

63
00:03:42,890 --> 00:03:44,960
and see how beautiful,

64
00:03:44,960 --> 00:03:47,240
and now everything comes together

65
00:03:47,240 --> 00:03:49,490
or basically fits together.

66
00:03:49,490 --> 00:03:51,910
So we always have this render method

67
00:03:51,910 --> 00:03:55,550
and we already know that we can call it on all the views.

68
00:03:55,550 --> 00:03:58,930
And so that's really nice about having an architecture,

69
00:03:58,930 --> 00:04:00,703
a structure like this.

70
00:04:01,680 --> 00:04:06,400
So that's going to be model.state.bookmarks.

71
00:04:06,400 --> 00:04:08,970
And so this is also the reason why,

72
00:04:08,970 --> 00:04:11,660
why in the state we didn't only store

73
00:04:11,660 --> 00:04:14,020
the IDs of the bookmarks,

74
00:04:14,020 --> 00:04:17,570
but really we stored the entire data about the bookmarks.

75
00:04:17,570 --> 00:04:20,520
So that we can nicely display them in this list.

76
00:04:20,520 --> 00:04:23,710
So a list that will look exactly like

77
00:04:24,970 --> 00:04:26,433
the result list here.

78
00:04:27,640 --> 00:04:31,163
So this should now actually already be working.

79
00:04:32,730 --> 00:04:35,160
So let's click this one here now,

80
00:04:35,160 --> 00:04:36,513
edit as a bookmark.

81
00:04:37,380 --> 00:04:39,253
And now when we come here,

82
00:04:39,253 --> 00:04:40,943
done there it is.

83
00:04:41,780 --> 00:04:42,613
Great.

84
00:04:44,470 --> 00:04:46,400
So let's try another one.

85
00:04:46,400 --> 00:04:49,203
And or bookmark here is still there.

86
00:04:50,150 --> 00:04:52,210
Now, if we add another one,

87
00:04:52,210 --> 00:04:53,290
done.

88
00:04:53,290 --> 00:04:55,350
Now we have two of them.

89
00:04:55,350 --> 00:04:57,890
And you can see that it also already

90
00:04:57,890 --> 00:05:01,520
automatically highlights the current recipe.

91
00:05:01,520 --> 00:05:03,950
So the one we are currently seeing,

92
00:05:03,950 --> 00:05:05,803
so if we now go to this one again.

93
00:05:06,750 --> 00:05:09,170
well, 10 the spicy chicken

94
00:05:09,170 --> 00:05:13,370
should actually be the selected one here.

95
00:05:13,370 --> 00:05:16,223
And so apparently we still have some kind of bug.

96
00:05:17,130 --> 00:05:19,280
So basically what we have to do here

97
00:05:19,280 --> 00:05:22,000
is that each time that we display a recipe.

98
00:05:22,000 --> 00:05:25,140
We should probably update this entire

99
00:05:25,140 --> 00:05:26,690
bookmarks panel here.

100
00:05:26,690 --> 00:05:30,310
So this view so that it can then basically

101
00:05:30,310 --> 00:05:34,840
select or highlight here the current recipe.

102
00:05:34,840 --> 00:05:39,840
So let's do that in the control recipe function,

103
00:05:40,550 --> 00:05:44,513
and you see that this one here is getting really crowded.

104
00:05:45,420 --> 00:05:46,993
So let's do that here.

105
00:05:48,510 --> 00:05:53,293
So bookmarksView.update and then again,

106
00:05:54,860 --> 00:05:59,853
model.state.bookmarks.

107
00:06:02,530 --> 00:06:03,363
Okay.

108
00:06:08,640 --> 00:06:10,193
So let's add this one.

109
00:06:12,630 --> 00:06:15,270
Okay, that worked nicely.

110
00:06:15,270 --> 00:06:19,350
And now this one here became the current one,

111
00:06:19,350 --> 00:06:21,370
but now let's go to some other one,

112
00:06:21,370 --> 00:06:24,580
which is not any of the bookmarks.

113
00:06:24,580 --> 00:06:29,300
And so now none of them you see here is selected.

114
00:06:29,300 --> 00:06:30,200
And so of course,

115
00:06:30,200 --> 00:06:33,990
that makes sense because while this is not one

116
00:06:33,990 --> 00:06:35,170
of the bookmarks.

117
00:06:35,170 --> 00:06:37,030
But now if we click here,

118
00:06:37,030 --> 00:06:39,643
then this one is of course the selected one.

119
00:06:40,890 --> 00:06:42,930
Now we can click here as well.

120
00:06:42,930 --> 00:06:44,740
Because again,

121
00:06:44,740 --> 00:06:47,060
these elements here are basically just

122
00:06:47,060 --> 00:06:49,180
the same as these ones.

123
00:06:49,180 --> 00:06:50,210
So when we click here,

124
00:06:50,210 --> 00:06:52,600
it loads the corresponding recipe

125
00:06:52,600 --> 00:06:53,733
and here are the same.

126
00:06:56,170 --> 00:07:00,470
So you see that now we went back to this one

127
00:07:00,470 --> 00:07:02,660
and this one got selected correctly.

128
00:07:02,660 --> 00:07:05,450
This one got selected correctly as well.

129
00:07:05,450 --> 00:07:08,770
And we also got the correct recipe

130
00:07:08,770 --> 00:07:11,260
and that's just amazing.

131
00:07:11,260 --> 00:07:13,200
So you'll see how easy it is now

132
00:07:13,200 --> 00:07:17,200
to integrate a new feature like this bookmark feature.

133
00:07:17,200 --> 00:07:20,280
When we already have a very nice architecture

134
00:07:20,280 --> 00:07:22,320
and structure in our code.

135
00:07:22,320 --> 00:07:26,090
Imagine that we had all of this code here,

136
00:07:26,090 --> 00:07:29,160
simply in one huge messy file.

137
00:07:29,160 --> 00:07:32,060
Then how difficult would it be to keep track

138
00:07:32,060 --> 00:07:35,340
of all the data and of how these different

139
00:07:35,340 --> 00:07:38,800
functions all interact with one another.

140
00:07:38,800 --> 00:07:42,350
Now, just to finish we need to fix the fact

141
00:07:42,350 --> 00:07:45,893
that these two views here are essentially the same.

142
00:07:46,730 --> 00:07:49,390
So at least the markup that they generate

143
00:07:49,390 --> 00:07:51,850
is in fact exactly the same.

144
00:07:51,850 --> 00:07:55,690
And so that is of course not good.

145
00:07:55,690 --> 00:07:58,790
So what I will do now is to basically implement

146
00:07:58,790 --> 00:08:01,750
a view that is kind of a parent view

147
00:08:01,750 --> 00:08:04,040
of these two views,

148
00:08:04,040 --> 00:08:07,113
and that will be called the previewView.

149
00:08:08,010 --> 00:08:10,843
So because this element here is called preview.

150
00:08:11,770 --> 00:08:16,770
And so then that can contain all of these methods here.

151
00:08:16,850 --> 00:08:20,360
And then in the generate markup of these two,

152
00:08:20,360 --> 00:08:22,483
we will then use those two.

153
00:08:23,460 --> 00:08:25,650
So but instead of explaining it,

154
00:08:25,650 --> 00:08:27,750
let me actually show it.

155
00:08:27,750 --> 00:08:32,750
So that's a previewView.js.

156
00:08:35,050 --> 00:08:38,933
And now let me get all of this here.

157
00:08:42,870 --> 00:08:43,703
All right.

158
00:08:45,070 --> 00:08:47,633
So this will now be called PreviewView.

159
00:08:51,030 --> 00:08:52,650
And what this view will do

160
00:08:52,650 --> 00:08:54,530
is to basically only generate

161
00:08:54,530 --> 00:08:57,113
one preview element like this here.

162
00:08:58,440 --> 00:08:59,980
All right.

163
00:08:59,980 --> 00:09:02,980
So this one will not have any message.

164
00:09:02,980 --> 00:09:05,180
It will not have an error message.

165
00:09:05,180 --> 00:09:08,363
And the parent element is also not important.

166
00:09:09,350 --> 00:09:11,450
So just follow me here for now.

167
00:09:11,450 --> 00:09:14,020
And I will explain why that is.

168
00:09:14,020 --> 00:09:16,653
So here I will simply select everything.

169
00:09:17,650 --> 00:09:21,173
Or in fact I could simply set this here to an empty string.

170
00:09:22,290 --> 00:09:25,190
So we don't need any parent element here.

171
00:09:25,190 --> 00:09:30,040
And actually this year is only the generate markup

172
00:09:31,450 --> 00:09:33,313
and here we don't need any of this.

173
00:09:35,880 --> 00:09:36,920
Okay.

174
00:09:36,920 --> 00:09:37,910
So again,

175
00:09:37,910 --> 00:09:41,770
this preview view will only generate the markup

176
00:09:41,770 --> 00:09:44,423
for one of these preview elements.

177
00:09:45,820 --> 00:09:46,653
All right.

178
00:09:48,100 --> 00:09:50,800
So now let's come here to the bookmarksView

179
00:09:50,800 --> 00:09:55,333
and get rid of this method here,

180
00:09:56,500 --> 00:09:59,420
so that we don't need anymore.

181
00:09:59,420 --> 00:10:01,283
And now here comes the magic.

182
00:10:02,460 --> 00:10:04,200
So as I mentioned before,

183
00:10:04,200 --> 00:10:08,040
we will use the previewView kind of as a child view

184
00:10:08,040 --> 00:10:11,900
of the bookmarksView and of the resultsView.

185
00:10:11,900 --> 00:10:14,423
So let's import the previewView here.

186
00:10:16,890 --> 00:10:18,940
So import previewView

187
00:10:23,460 --> 00:10:28,240
from .js

188
00:10:29,410 --> 00:10:32,890
and now what we will do here

189
00:10:32,890 --> 00:10:35,970
is to still loop over this.data,

190
00:10:35,970 --> 00:10:38,660
which is still all of the bookmarks.

191
00:10:38,660 --> 00:10:40,640
But now what we want to do here

192
00:10:40,640 --> 00:10:44,423
is to call basically this generate markup.

193
00:10:45,870 --> 00:10:48,340
However, that would not really work.

194
00:10:48,340 --> 00:10:51,763
And so what we really want is this.

195
00:10:52,610 --> 00:10:54,603
So result,

196
00:10:56,600 --> 00:10:57,930
and then for each of them,

197
00:10:57,930 --> 00:11:02,640
we want preview.render,

198
00:11:02,640 --> 00:11:03,473
actually.

199
00:11:04,440 --> 00:11:06,770
So with the result,

200
00:11:06,770 --> 00:11:09,360
but actually that is not all yet

201
00:11:09,360 --> 00:11:12,070
because like this wouldn't work.

202
00:11:12,070 --> 00:11:15,923
But let's quickly analyze what is going to happen here.

203
00:11:16,900 --> 00:11:19,500
So these three here,

204
00:11:19,500 --> 00:11:23,640
so as the render method on bookmarksView is called,

205
00:11:23,640 --> 00:11:27,040
so this render method,

206
00:11:27,040 --> 00:11:29,760
it will set the data on the bookmarksView

207
00:11:29,760 --> 00:11:32,150
and then it will generate the markup.

208
00:11:32,150 --> 00:11:36,680
So it will call this method here.

209
00:11:36,680 --> 00:11:39,840
And so this gets access to this.data,

210
00:11:39,840 --> 00:11:42,600
and then we map over that data.

211
00:11:42,600 --> 00:11:45,170
And so for each of the results,

212
00:11:45,170 --> 00:11:49,690
or let's actually call it bookmarks here.

213
00:11:49,690 --> 00:11:51,590
So bookmark.

214
00:11:51,590 --> 00:11:53,463
So for each of this bookmark,

215
00:11:54,570 --> 00:11:55,993
so not the boom mark.

216
00:11:57,010 --> 00:11:58,830
So for each of the bookmarks,

217
00:11:58,830 --> 00:12:02,280
we want to then render a preview.

218
00:12:02,280 --> 00:12:06,610
However, here we actually need to return a string.

219
00:12:06,610 --> 00:12:09,040
So all of this should be a string

220
00:12:09,040 --> 00:12:12,540
that we need to return from the generate markup method.

221
00:12:12,540 --> 00:12:14,193
So that then in the view,

222
00:12:15,070 --> 00:12:18,340
it can insert that markup into the dam.

223
00:12:18,340 --> 00:12:19,940
Right.

224
00:12:19,940 --> 00:12:22,210
However, by having render here,

225
00:12:22,210 --> 00:12:27,170
preview.js itself we'll try to render some markup.

226
00:12:27,170 --> 00:12:29,990
And so that is not really going to work.

227
00:12:29,990 --> 00:12:32,610
And so what we will do is to change

228
00:12:32,610 --> 00:12:34,500
or render method here

229
00:12:34,500 --> 00:12:36,593
and add a second parameter to it.

230
00:12:37,430 --> 00:12:40,623
So here we will add a parameter called render,

231
00:12:41,620 --> 00:12:44,183
which by default will be set to true.

232
00:12:45,840 --> 00:12:49,390
So then all of this here stays the same,

233
00:12:49,390 --> 00:12:51,943
but if render is false,

234
00:12:53,610 --> 00:12:56,853
which is what we will set it to in a minute.

235
00:12:57,760 --> 00:12:59,460
So if render is false,

236
00:12:59,460 --> 00:13:01,590
then we actually want to return

237
00:13:02,530 --> 00:13:05,483
this markup that was just generated.

238
00:13:06,400 --> 00:13:09,650
Now, why don't we simply call generate markup

239
00:13:09,650 --> 00:13:13,823
itself without messing with the whole render method.

240
00:13:15,090 --> 00:13:16,190
So here,

241
00:13:16,190 --> 00:13:21,170
why don't we simply call previewView.generate markup?

242
00:13:21,170 --> 00:13:23,870
Well, that's because we still

243
00:13:23,870 --> 00:13:26,710
need it to set the data property

244
00:13:26,710 --> 00:13:29,240
to the data that we passed in.

245
00:13:29,240 --> 00:13:32,730
So that then here in the previewView,

246
00:13:32,730 --> 00:13:35,210
we can use this keyword.

247
00:13:35,210 --> 00:13:40,210
And so actually we need to now replace result by this.data.

248
00:13:43,030 --> 00:13:47,853
So this.data and then all of that.

249
00:13:49,940 --> 00:13:51,200
Okay.

250
00:13:51,200 --> 00:13:53,130
And so here we want to render it

251
00:13:53,130 --> 00:13:58,093
and set the render parameter to false.

252
00:13:59,280 --> 00:14:00,113
Okay.

253
00:14:00,113 --> 00:14:03,050
So that was a lot to take in.

254
00:14:03,050 --> 00:14:06,230
So let's recap what happens here.

255
00:14:06,230 --> 00:14:08,950
So the first part I think is obvious.

256
00:14:08,950 --> 00:14:12,980
So what happens when bookmarksView.render is called?

257
00:14:12,980 --> 00:14:15,423
So we then enter this method here.

258
00:14:16,460 --> 00:14:19,810
Now, since we didn't duplicate the same code here

259
00:14:19,810 --> 00:14:22,040
of previewView.

260
00:14:22,040 --> 00:14:25,650
So basically this way here of generating this preview,

261
00:14:25,650 --> 00:14:29,193
we essentially separated that into its own child view.

262
00:14:30,560 --> 00:14:33,320
And so then here in the bookmarksView,

263
00:14:33,320 --> 00:14:37,880
we try to render basically that view

264
00:14:37,880 --> 00:14:39,770
for each of the bookmarks,

265
00:14:39,770 --> 00:14:42,720
but instead of actually rendering it to the dam.

266
00:14:42,720 --> 00:14:45,280
We simply have to render method returned

267
00:14:45,280 --> 00:14:47,370
to markup as a string.

268
00:14:47,370 --> 00:14:49,940
So that's why we set it here to faults,

269
00:14:49,940 --> 00:14:53,653
which will then trigger this code here.

270
00:14:54,780 --> 00:14:55,613
Right.

271
00:14:56,648 --> 00:15:00,690
And so then all of this year will basically become a string.

272
00:15:00,690 --> 00:15:01,720
And so in the end,

273
00:15:01,720 --> 00:15:06,580
we end up with an array of strings.

274
00:15:06,580 --> 00:15:07,930
So because of map,

275
00:15:07,930 --> 00:15:10,870
and then in the end we join all of that together

276
00:15:10,870 --> 00:15:13,160
and end up with a big string

277
00:15:13,160 --> 00:15:16,220
with all the markup that we want to render.

278
00:15:16,220 --> 00:15:17,910
So let's see what happens here.

279
00:15:20,222 --> 00:15:22,050
So as we click,

280
00:15:22,050 --> 00:15:23,350
let's see the console here

281
00:15:24,190 --> 00:15:26,393
and it looks like we didn't get any error.

282
00:15:27,830 --> 00:15:32,730
And so indeed now here or bookmarks still work.

283
00:15:32,730 --> 00:15:35,180
Now the search here will not yet work

284
00:15:36,330 --> 00:15:38,540
because we still need to put this here

285
00:15:39,720 --> 00:15:41,403
in the results view.

286
00:15:43,830 --> 00:15:45,400
But that's very easy.

287
00:15:45,400 --> 00:15:48,280
All we have to do now is to copy this code

288
00:15:49,880 --> 00:15:51,103
and put it here,

289
00:15:54,589 --> 00:15:56,557
and here we can now call this result.

290
00:15:58,230 --> 00:16:01,710
But of course it would have worked exactly the same way.

291
00:16:01,710 --> 00:16:05,213
And we also need to import the previewView,

292
00:16:08,520 --> 00:16:09,893
but that should be it.

293
00:16:11,200 --> 00:16:15,170
And so now these two views are essentially the same thing,

294
00:16:15,170 --> 00:16:17,350
but the only difference that they have a different

295
00:16:17,350 --> 00:16:20,970
parent element and a different error message.

296
00:16:20,970 --> 00:16:21,803
Right.

297
00:16:21,803 --> 00:16:24,200
But the main functionality of them.

298
00:16:24,200 --> 00:16:27,080
So the main way of generating the markup

299
00:16:27,080 --> 00:16:29,140
is essentially the same for them.

300
00:16:29,140 --> 00:16:32,110
And so in order to encapsulate that somewhere,

301
00:16:32,110 --> 00:16:34,853
we created another child class.

302
00:16:35,700 --> 00:16:37,150
And so that is again,

303
00:16:37,150 --> 00:16:38,183
this one here.

304
00:16:39,910 --> 00:16:41,540
Okay.

305
00:16:41,540 --> 00:16:44,230
So please analyze this here.

306
00:16:44,230 --> 00:16:45,960
After this video is done

307
00:16:45,960 --> 00:16:48,400
and really take a look at how the data

308
00:16:48,400 --> 00:16:50,890
flows between these different modules

309
00:16:50,890 --> 00:16:54,050
and between these different classes.

310
00:16:54,050 --> 00:16:54,883
All right.

311
00:16:56,380 --> 00:16:57,283
So let's see.

312
00:16:58,150 --> 00:17:00,133
And indeed it still works.

313
00:17:01,990 --> 00:17:04,440
So here for now we get no message

314
00:17:04,440 --> 00:17:06,643
because we don't have any bookmarks yet,

315
00:17:08,150 --> 00:17:09,373
but as we click it,

316
00:17:10,260 --> 00:17:12,410
then that should appear there.

317
00:17:12,410 --> 00:17:17,410
Let's add another one and beautiful.

318
00:17:17,420 --> 00:17:19,690
So that works great.

319
00:17:19,690 --> 00:17:22,040
Here we can then come back to the next one

320
00:17:23,320 --> 00:17:25,153
and now let's un-bookmark it.

321
00:17:26,870 --> 00:17:28,360
So it should disappear now

322
00:17:29,430 --> 00:17:32,522
and now un-bookmark this one as well.

323
00:17:32,522 --> 00:17:37,070
And then we get automatically this message here.

324
00:17:37,070 --> 00:17:39,700
So the no bookmarks yet message,

325
00:17:39,700 --> 00:17:41,770
which of course automatically comes

326
00:17:42,870 --> 00:17:45,790
here from this error message that we specified

327
00:17:45,790 --> 00:17:47,173
in this bookmarks view.

328
00:17:48,560 --> 00:17:50,630
So that's really great.

329
00:17:50,630 --> 00:17:52,530
So our application

330
00:17:52,530 --> 00:17:56,090
is becoming almost finished actually,

331
00:17:56,090 --> 00:17:58,080
and now all that we want to do here

332
00:17:58,080 --> 00:18:01,810
to finish the bookmarks is to actually persist it

333
00:18:01,810 --> 00:18:03,800
and between page loads.

334
00:18:03,800 --> 00:18:05,330
So right now, of course,

335
00:18:05,330 --> 00:18:07,250
this one here is bookmarked,

336
00:18:07,250 --> 00:18:10,030
but now as we reload the page,

337
00:18:10,030 --> 00:18:13,010
then that bookmark is gone.

338
00:18:13,010 --> 00:18:14,300
Right.

339
00:18:14,300 --> 00:18:15,610
So it's no longer here

340
00:18:15,610 --> 00:18:18,720
and it's also no longer up here.

341
00:18:18,720 --> 00:18:20,910
And so now what we're gonna do next

342
00:18:20,910 --> 00:18:24,970
is to store or bookmarks data into the local storage.

343
00:18:24,970 --> 00:18:26,660
And then as we load the page,

344
00:18:26,660 --> 00:18:29,343
we basically get that data back.

