All language subtitles for 21. Storing Bookmarks With localStorage

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian Download
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 1 00:00:01,220 --> 00:00:02,710 So, as I mentioned, 2 2 00:00:02,710 --> 00:00:05,150 by the end of the last lecture. 3 3 00:00:05,150 --> 00:00:09,010 In this one, we will now make the bookmarks data persist 4 4 00:00:09,010 --> 00:00:10,830 across page loads. 5 5 00:00:10,830 --> 00:00:13,970 And for that, we're gonna use local storage. 6 6 00:00:13,970 --> 00:00:17,360 And once again, this will now become quite easy, 7 7 00:00:17,360 --> 00:00:19,370 and quite straightforward, 8 8 00:00:19,370 --> 00:00:22,730 because we already have our entire project structure 9 9 00:00:22,730 --> 00:00:24,183 so nicely set up. 10 10 00:00:25,840 --> 00:00:29,540 So storing data in local storage 11 11 00:00:29,540 --> 00:00:32,230 is of course all about data. 12 12 00:00:32,230 --> 00:00:36,083 And so that will have to be implemented here in the model. 13 13 00:00:37,090 --> 00:00:40,863 So let's actually take a look here at our flow chart again. 14 14 00:00:42,080 --> 00:00:46,110 And so now this is all about loading bookmarks 15 15 00:00:46,110 --> 00:00:50,720 from local storage and storing bookmarks to local storage. 16 16 00:00:50,720 --> 00:00:55,213 So when should the bookmarks be stored to local storage? 17 17 00:00:56,230 --> 00:00:58,750 Well, that happens whenever the user 18 18 00:00:58,750 --> 00:01:00,970 bookmarks a recipe. 19 19 00:01:00,970 --> 00:01:03,240 And of course that also when the user 20 20 00:01:03,240 --> 00:01:05,770 unbookmarks the recipe. 21 21 00:01:05,770 --> 00:01:07,990 So in either of these cases, 22 22 00:01:07,990 --> 00:01:09,690 the current bookmarks array 23 23 00:01:09,690 --> 00:01:12,623 basically needs to be stored to local storage. 24 24 00:01:14,050 --> 00:01:17,350 Okay, so what I just said, 25 25 00:01:17,350 --> 00:01:21,260 is that whenever we add a bookmark or delete a bookmark, 26 26 00:01:21,260 --> 00:01:23,740 we need to persist that data. 27 27 00:01:23,740 --> 00:01:26,420 And so let's add a function here, 28 28 00:01:26,420 --> 00:01:30,070 which we can then call in these two functions. 29 29 00:01:30,070 --> 00:01:32,080 So this one we don't need to export 30 30 00:01:34,270 --> 00:01:38,073 because we simply will call it in these other two functions. 31 31 00:01:39,400 --> 00:01:41,063 So persist, bookmarks. 32 32 00:01:45,510 --> 00:01:47,030 And then here, remember, 33 33 00:01:47,030 --> 00:01:50,163 all we have to do is local storage.setItem. 34 34 00:01:51,900 --> 00:01:54,633 Then here we can give that item a name. 35 35 00:01:56,850 --> 00:01:58,950 So that's bookmarks. 36 36 00:01:58,950 --> 00:02:01,430 And then here, we need to set a string. 37 37 00:02:01,430 --> 00:02:04,673 And we do that by calling Json.stringify 38 38 00:02:05,930 --> 00:02:07,200 and then with the object 39 39 00:02:07,200 --> 00:02:10,940 that we basically want to convert to a string. 40 40 00:02:10,940 --> 00:02:14,383 And so that is state.bookmarks, 41 41 00:02:15,230 --> 00:02:17,090 and that's actually it. 42 42 00:02:17,090 --> 00:02:19,700 Now, all we have to do is to call this function 43 43 00:02:19,700 --> 00:02:20,913 in these two places. 44 44 00:02:24,480 --> 00:02:26,880 And that's already the first step 45 45 00:02:26,880 --> 00:02:30,133 and we can actually try that out already. 46 46 00:02:31,330 --> 00:02:33,283 So at least seeing it in the console. 47 47 00:02:35,920 --> 00:02:40,920 So let's bookmark this one and also this Greek pasta salad. 48 48 00:02:44,240 --> 00:02:47,620 Right, so both of them are now here 49 49 00:02:47,620 --> 00:02:52,093 and let's come here to application and then local storage. 50 50 00:02:53,740 --> 00:02:57,450 And so here it is already. 51 51 00:02:57,450 --> 00:03:01,210 So here are the bookmarks with these two recipes 52 52 00:03:01,210 --> 00:03:02,990 that we just stored. 53 53 00:03:02,990 --> 00:03:05,170 And now, as I reload the page, 54 54 00:03:05,170 --> 00:03:07,163 you see that the data is still here. 55 55 00:03:08,130 --> 00:03:11,550 Now, of course it is not yet back here. 56 56 00:03:11,550 --> 00:03:14,520 So just because the data is still in local storage, 57 57 00:03:14,520 --> 00:03:18,560 doesn't mean that it's magically gonna show up here 58 58 00:03:18,560 --> 00:03:21,940 because we didn't write any code for that yet, 59 59 00:03:21,940 --> 00:03:25,140 but let's now actually go do that. 60 60 00:03:25,140 --> 00:03:27,760 So basically when the page is loaded, 61 61 00:03:27,760 --> 00:03:30,030 we then want to run a method 62 62 00:03:30,030 --> 00:03:33,163 which will basically render the bookmarks here. 63 63 00:03:34,070 --> 00:03:35,610 All right. 64 64 00:03:35,610 --> 00:03:37,860 So the first step in doing that, 65 65 00:03:37,860 --> 00:03:41,600 is to actually get the bookmarks out of the local storage 66 66 00:03:41,600 --> 00:03:43,670 and back into our code. 67 67 00:03:43,670 --> 00:03:47,680 And then after that, we can then as I just said, 68 68 00:03:47,680 --> 00:03:51,903 render them back here to this bookmarks view, okay? 69 69 00:03:55,160 --> 00:03:57,890 So we have to code for persisting. 70 70 00:03:57,890 --> 00:04:01,810 So for storing the bookmarks in local storage here, 71 71 00:04:01,810 --> 00:04:05,430 so let's now also have to code for taking them out 72 72 00:04:05,430 --> 00:04:06,453 also right here. 73 73 00:04:07,940 --> 00:04:12,460 And let me simply write an initialization function here. 74 74 00:04:12,460 --> 00:04:13,823 So an init function, 75 75 00:04:14,730 --> 00:04:16,550 and then right at the beginning, 76 76 00:04:16,550 --> 00:04:20,083 I will call that init function. 77 77 00:04:21,175 --> 00:04:25,540 And here, of course, missing the function keyword. 78 78 00:04:25,540 --> 00:04:28,833 And so here we need to do the opposite. 79 79 00:04:29,780 --> 00:04:33,193 So LocalStorage.getItem, 80 80 00:04:35,660 --> 00:04:39,223 and then remember it is called bookmarks. 81 81 00:04:40,130 --> 00:04:43,700 And then we also need to store that somewhere 82 82 00:04:43,700 --> 00:04:46,970 and I'm not storing it directly into our state, 83 83 00:04:46,970 --> 00:04:51,520 because this data might not be defined actually. 84 84 00:04:51,520 --> 00:04:54,760 So we might have nothing of course, in the storage. 85 85 00:04:54,760 --> 00:04:58,010 And so only if there is storage, 86 86 00:04:58,010 --> 00:05:03,010 then we want state.bookmarks to be 87 87 00:05:05,680 --> 00:05:08,500 Json.parse, 88 88 00:05:08,500 --> 00:05:12,403 which is basically to convert the string back to an object. 89 89 00:05:14,610 --> 00:05:17,520 And so here we are now calling this function 90 90 00:05:17,520 --> 00:05:20,330 right in the beginning and then 91 91 00:05:20,330 --> 00:05:25,093 just to see let's then immediately log state.bookmarks 92 92 00:05:26,490 --> 00:05:27,903 to the console. 93 93 00:05:31,230 --> 00:05:35,150 Okay, so here we have a lot of logs. 94 94 00:05:35,150 --> 00:05:38,470 So let's go here to line 11 of these two 95 95 00:05:38,470 --> 00:05:41,233 and line 114 of the model. 96 96 00:05:42,590 --> 00:05:46,880 So model, now this one actually, 97 97 00:05:46,880 --> 00:05:48,630 is the one that I just did, 98 98 00:05:48,630 --> 00:05:52,400 but here we apparently have some console dot logs 99 99 00:05:52,400 --> 00:05:53,453 that we don't need. 100 100 00:05:54,380 --> 00:05:57,743 So here and here, 101 101 00:05:59,520 --> 00:06:01,430 and in fact, let's close these here 102 102 00:06:04,140 --> 00:06:05,823 and actually all of them for now. 103 103 00:06:07,650 --> 00:06:08,920 And so here, right? 104 104 00:06:08,920 --> 00:06:11,993 Immediately we have the local storage. 105 105 00:06:13,040 --> 00:06:16,933 Now, for some reason, this recipe was not find let's reload. 106 106 00:06:18,080 --> 00:06:19,303 Well, that's weird. 107 107 00:06:21,700 --> 00:06:25,500 And apparently we broke something in our code, 108 108 00:06:25,500 --> 00:06:28,910 but let's worry about that in a second. 109 109 00:06:28,910 --> 00:06:30,390 So for now, what matters here, 110 110 00:06:30,390 --> 00:06:35,060 is that we actually got the data back from local storage. 111 111 00:06:35,060 --> 00:06:39,480 So let's see if this has anything to do with the code 112 112 00:06:39,480 --> 00:06:40,913 that we just wrote here. 113 113 00:06:46,530 --> 00:06:49,200 Well, that's very weird. 114 114 00:06:49,200 --> 00:06:53,320 So now it is back to working for some reason. 115 115 00:06:53,320 --> 00:06:55,740 So let's actually log the error 116 116 00:06:55,740 --> 00:06:57,913 that is actually happening to the console. 117 117 00:06:59,260 --> 00:07:02,920 So here let's set that back to cause that error, 118 118 00:07:02,920 --> 00:07:05,120 but then here in the controller, 119 119 00:07:05,120 --> 00:07:10,120 so the one that is responsible for loading the recipe. 120 120 00:07:11,090 --> 00:07:11,980 So here, right now, 121 121 00:07:11,980 --> 00:07:15,620 we are only rendering the error to the user interface, 122 122 00:07:15,620 --> 00:07:19,400 and we are doing that with this nicely formatted error 123 123 00:07:19,400 --> 00:07:22,330 that we defined in the recipe view. 124 124 00:07:22,330 --> 00:07:26,330 But so let's not actually also log the error itself 125 125 00:07:26,330 --> 00:07:28,520 in the console so that we can see 126 126 00:07:28,520 --> 00:07:29,893 what is actually happening. 127 127 00:07:31,300 --> 00:07:34,493 So console error with error. 128 128 00:07:36,330 --> 00:07:40,410 And so now we get text content of undefined 129 129 00:07:42,310 --> 00:07:45,023 coming from controller at line 34. 130 130 00:07:47,030 --> 00:07:49,800 Okay, that's just the log. 131 131 00:07:49,800 --> 00:07:52,820 And so here we have a stack trace. 132 132 00:07:52,820 --> 00:07:56,713 And so the error itself is originating in line 25. 133 133 00:07:58,610 --> 00:08:02,023 So it is here when we update the bookmarks view. 134 134 00:08:03,640 --> 00:08:08,150 Okay, so this is where the error basically comes from. 135 135 00:08:08,150 --> 00:08:12,270 And so this is how we use this so-called stack trace. 136 136 00:08:12,270 --> 00:08:15,240 So here we can then follow exactly what happens. 137 137 00:08:15,240 --> 00:08:18,600 So here we then need to go to view 27, 138 138 00:08:18,600 --> 00:08:22,000 which is where this update is defined 10 for each 139 139 00:08:22,000 --> 00:08:23,493 and then line 37. 140 140 00:08:24,520 --> 00:08:26,713 So line 37 in the view, 141 141 00:08:28,890 --> 00:08:31,203 and so that is right here. 142 142 00:08:32,220 --> 00:08:33,530 So some kind of problem 143 143 00:08:33,530 --> 00:08:37,920 with updating the bookmarks view. 144 144 00:08:37,920 --> 00:08:41,810 So apparently we're trying to set the text content 145 145 00:08:41,810 --> 00:08:45,560 on some element here that doesn't yet exist. 146 146 00:08:45,560 --> 00:08:49,150 So maybe we are simply calling this method here 147 147 00:08:49,150 --> 00:08:50,380 a little bit too soon. 148 148 00:08:50,380 --> 00:08:52,223 So that's moved out here to the end. 149 149 00:08:56,970 --> 00:09:01,970 So updating a bookmark's view. 150 150 00:09:04,730 --> 00:09:06,940 So we still have an error. 151 151 00:09:06,940 --> 00:09:10,233 So this might be a good time to use the debugger. 152 152 00:09:14,160 --> 00:09:18,250 And I hope that with this, we will be able to find the bug. 153 153 00:09:18,250 --> 00:09:22,500 And if you're not interested in watching me find this bug 154 154 00:09:22,500 --> 00:09:25,660 and please feel free to jump to some later point 155 155 00:09:25,660 --> 00:09:26,493 in the code. 156 156 00:09:27,690 --> 00:09:29,653 So you see that at this point, 157 157 00:09:30,510 --> 00:09:32,363 the recipe has actually loaded. 158 158 00:09:34,880 --> 00:09:38,320 Okay, and so now here we are at the debugger. 159 159 00:09:38,320 --> 00:09:42,220 And so let's now go to the next step, 160 160 00:09:42,220 --> 00:09:43,990 which is this one here. 161 161 00:09:43,990 --> 00:09:47,153 Then we go into bookmarks view.update. 162 162 00:09:48,420 --> 00:09:50,720 And at this point, the data here, 163 163 00:09:50,720 --> 00:09:53,600 is actually already the data that is coming 164 164 00:09:53,600 --> 00:09:57,063 from our local storage, right? 165 165 00:09:58,320 --> 00:10:02,743 So this bookmarks here is at this point already loaded. 166 166 00:10:03,670 --> 00:10:08,380 So right here we do that right at the beginning. 167 167 00:10:08,380 --> 00:10:11,300 And so therefore the bookmarks, 168 168 00:10:11,300 --> 00:10:15,340 so model.state.bookmarks here is already defined. 169 169 00:10:15,340 --> 00:10:18,513 So that's these two objects right there. 170 170 00:10:19,500 --> 00:10:24,163 Let's actually see the scope here. 171 171 00:10:25,190 --> 00:10:29,093 And so indeed that's these two recipe objects, right? 172 172 00:10:30,440 --> 00:10:32,933 So here we also have the entire call stack. 173 173 00:10:36,320 --> 00:10:39,970 Okay, now let's keep going. 174 174 00:10:39,970 --> 00:10:41,740 So the new markup, 175 175 00:10:41,740 --> 00:10:44,573 then here we go through all of this. 176 176 00:10:53,160 --> 00:10:55,683 Okay, once again, 177 177 00:11:02,383 --> 00:11:04,810 all right, so here we are back. 178 178 00:11:04,810 --> 00:11:06,373 Whoa, what's that? 179 179 00:11:07,420 --> 00:11:10,550 Ah, so I just hovered over the string, 180 180 00:11:10,550 --> 00:11:11,763 which has all of this. 181 181 00:11:12,810 --> 00:11:15,980 So that's this markup that we just generated 182 182 00:11:15,980 --> 00:11:19,213 then here let's generate this dam, okay? 183 183 00:11:23,490 --> 00:11:26,513 And here are the new elements and the current elements. 184 184 00:11:27,710 --> 00:11:30,523 So right now here, inside the current elements, 185 185 00:11:31,380 --> 00:11:33,373 let's see what that is. 186 186 00:11:35,050 --> 00:11:36,920 So that's all of the elements 187 187 00:11:36,920 --> 00:11:39,890 that are basically right now 188 188 00:11:39,890 --> 00:11:44,763 in that empty bookmarks panel, right? 189 189 00:11:48,690 --> 00:11:52,390 Now, and do you see that the length of this one here is five 190 190 00:11:52,390 --> 00:11:54,600 and this one here is 14. 191 191 00:11:54,600 --> 00:11:58,950 And so I think I'm starting to see the problem here. 192 192 00:11:58,950 --> 00:12:01,430 So these two arrays are the arrays 193 193 00:12:01,430 --> 00:12:05,920 that we are basically comparing here, right? 194 194 00:12:05,920 --> 00:12:07,840 So we have this hole for each loop 195 195 00:12:07,840 --> 00:12:12,170 to compare the elements in these two arrays, right? 196 196 00:12:12,170 --> 00:12:16,700 Because the goal of this method is to not add new elements, 197 197 00:12:16,700 --> 00:12:19,610 but only to replace some text and elements 198 198 00:12:19,610 --> 00:12:21,560 that already exist. 199 199 00:12:21,560 --> 00:12:25,920 However, right now this bookmarks here is still empty. 200 200 00:12:25,920 --> 00:12:28,770 And what does update here is trying to do, 201 201 00:12:28,770 --> 00:12:31,650 is to now insert the data in there. 202 202 00:12:31,650 --> 00:12:35,570 And so that should not happen, okay? 203 203 00:12:35,570 --> 00:12:37,793 And so I'll actually quit this now, 204 204 00:12:38,680 --> 00:12:40,683 by going back here, 205 205 00:12:41,760 --> 00:12:44,623 getting rid of this and simply reloading. 206 206 00:12:49,800 --> 00:12:51,403 So let's get this down. 207 207 00:12:52,330 --> 00:12:54,560 And so in order to prevent this, 208 208 00:12:54,560 --> 00:12:57,160 the first thing that we need to do now on the page 209 209 00:12:57,160 --> 00:12:59,950 is basically render the bookmarks 210 210 00:12:59,950 --> 00:13:01,750 and remember that's what happened 211 211 00:13:01,750 --> 00:13:05,100 right at the beginning when we load the page. 212 212 00:13:05,100 --> 00:13:07,800 So let's go to the bookmarks view 213 213 00:13:08,640 --> 00:13:10,813 and here create a new handler. 214 214 00:13:12,150 --> 00:13:15,433 So add handler render, 215 215 00:13:16,440 --> 00:13:19,590 which receives an handler, 216 216 00:13:19,590 --> 00:13:22,723 and then window.addeventlistener and load. 217 217 00:13:27,130 --> 00:13:30,143 And then we will immediately call this handler. 218 218 00:13:32,011 --> 00:13:35,030 Okay, and so here, 219 219 00:13:35,030 --> 00:13:37,250 we already imported it. 220 220 00:13:37,250 --> 00:13:38,880 And so here at the very end, 221 221 00:13:38,880 --> 00:13:42,790 let's create then the handler function. 222 222 00:13:42,790 --> 00:13:47,553 So the controller control and bookmarks, 223 223 00:13:53,247 --> 00:13:55,230 and then all that we will do 224 224 00:13:55,230 --> 00:13:59,830 is actually take bookmarksview.render 225 225 00:13:59,830 --> 00:14:04,830 with state.bookmarks. 226 226 00:14:04,950 --> 00:14:09,450 And again, that is actually model.state. 227 227 00:14:09,450 --> 00:14:13,290 And now let's ask the first of all thing here, 228 228 00:14:13,290 --> 00:14:17,230 do bookmarks view.addhandlerrender 229 229 00:14:20,210 --> 00:14:22,563 with the control bookmarks? 230 230 00:14:24,280 --> 00:14:26,470 And so now we are back to working 231 231 00:14:26,470 --> 00:14:30,363 and the two bookmarks from before are now actually here. 232 232 00:14:32,560 --> 00:14:35,093 All right, so with that we solved the problem, 233 233 00:14:36,250 --> 00:14:40,740 because now as the page here tries to then 234 234 00:14:42,900 --> 00:14:45,840 updating the bookmarks view, 235 235 00:14:45,840 --> 00:14:48,120 the bookmarks are already there. 236 236 00:14:48,120 --> 00:14:50,970 And so then there's nothing to update really. 237 237 00:14:50,970 --> 00:14:55,260 So we can actually move that back up here, I believe 238 238 00:14:57,370 --> 00:14:58,923 actually this one as well. 239 239 00:15:02,150 --> 00:15:03,973 So let's try that again. 240 240 00:15:05,220 --> 00:15:10,220 And yeah, so this is a bit of a more, 241 241 00:15:10,260 --> 00:15:11,410 a natural order 242 242 00:15:14,730 --> 00:15:15,573 now, okay. 243 243 00:15:17,160 --> 00:15:19,610 And so now of course I can click here 244 244 00:15:19,610 --> 00:15:22,220 and then this gets selected 245 245 00:15:22,220 --> 00:15:24,670 and everything keeps working the same. 246 246 00:15:24,670 --> 00:15:28,550 So we don't even need to search functionality 247 247 00:15:28,550 --> 00:15:32,433 to be able to switch between our recipes. 248 248 00:15:34,200 --> 00:15:36,517 And of course, if we unbookmark, 249 249 00:15:36,517 --> 00:15:40,050 then that is gone, and as we reload the page, 250 250 00:15:40,050 --> 00:15:41,683 then we only have this one, 251 251 00:15:43,180 --> 00:15:47,600 then let's remove all of them. 252 252 00:15:47,600 --> 00:15:51,860 And then as this was re-rendered, right? 253 253 00:15:51,860 --> 00:15:55,770 Then we got this error message here back. 254 254 00:15:55,770 --> 00:15:57,830 And of course, if we reload now, 255 255 00:15:57,830 --> 00:16:00,693 then we have no bookmarks at all, again. 256 256 00:16:01,830 --> 00:16:02,740 Now just to finish, 257 257 00:16:02,740 --> 00:16:06,843 let's quickly add like a quick function here for debugging. 258 258 00:16:09,170 --> 00:16:12,643 Let's call it clear bookmarks, 259 259 00:16:14,060 --> 00:16:16,880 which is simply a function that at some point 260 260 00:16:16,880 --> 00:16:18,793 we might want to call, 261 261 00:16:20,420 --> 00:16:23,950 but again, only during development, 262 262 00:16:23,950 --> 00:16:26,633 so clear 10 bookmarks. 263 263 00:16:28,550 --> 00:16:30,000 So when I'm working with this, 264 264 00:16:30,000 --> 00:16:34,230 then sometimes I need to do this. 265 265 00:16:34,230 --> 00:16:35,873 So clearing all the bookmarks. 266 266 00:16:37,830 --> 00:16:40,853 So let me add a couple of ones here. 267 267 00:16:43,410 --> 00:16:45,713 So this one and this one. 268 268 00:16:46,890 --> 00:16:49,500 Okay, and now as they reload the page, 269 269 00:16:49,500 --> 00:16:51,193 it should then clear all of them. 270 270 00:16:52,860 --> 00:16:55,543 Well, it didn't for some reason. 271 271 00:16:58,600 --> 00:17:00,360 Oh, and that's probably 272 272 00:17:00,360 --> 00:17:03,060 because this one here happened first, 273 273 00:17:03,060 --> 00:17:07,220 so let's take this one out, do that again. 274 274 00:17:07,220 --> 00:17:09,103 And now the bookmarks are gone. 275 275 00:17:11,110 --> 00:17:12,860 Okay, but by default, 276 276 00:17:12,860 --> 00:17:15,490 this will, of course be turned off 277 277 00:17:15,490 --> 00:17:19,173 because otherwise our application is not going to work. 278 278 00:17:21,850 --> 00:17:24,723 So here is the hot pizza dip. 279 279 00:17:26,400 --> 00:17:31,010 And it is still bookmarked after we reload the application. 280 280 00:17:31,010 --> 00:17:33,650 And so let's quickly to finish, 281 281 00:17:33,650 --> 00:17:35,200 check out our flow chart, 282 282 00:17:35,200 --> 00:17:38,463 but I'm pretty confident that everything is implemented. 283 283 00:17:39,310 --> 00:17:41,850 So when the user clicks a bookmark, 284 284 00:17:41,850 --> 00:17:44,430 it will then mark the selected bookmark here. 285 285 00:17:44,430 --> 00:17:47,240 And of course it will render the recipe. 286 286 00:17:47,240 --> 00:17:48,653 When the page loads, 287 287 00:17:49,934 --> 00:17:52,990 then the bookmarks are loaded from local storage 288 288 00:17:52,990 --> 00:17:54,890 and they are rendered. 289 289 00:17:54,890 --> 00:17:57,670 So check here as well. 290 290 00:17:57,670 --> 00:18:00,150 And when the user bookmarks a recipe, 291 291 00:18:00,150 --> 00:18:03,520 then it gets stored to local storage. 292 292 00:18:03,520 --> 00:18:05,590 So check here as well. 293 293 00:18:05,590 --> 00:18:08,460 And so we just implemented all of this 294 294 00:18:08,460 --> 00:18:10,650 or rather complex part. 295 295 00:18:10,650 --> 00:18:13,840 So now it's finally time to take a break 296 296 00:18:13,840 --> 00:18:17,990 and take an overview of what we need to implement next 297 297 00:18:17,990 --> 00:18:20,223 in order to finish this application. 25181

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.