1 00:00:00,690 --> 00:00:01,440 Welcome back. 2 00:00:01,530 --> 00:00:08,940 So at the end of this video, we are going to be done with refactoring our application, at least to 3 00:00:08,940 --> 00:00:15,150 a point where we can see our articles again because at this point think we couldn't because we have 4 00:00:15,150 --> 00:00:15,960 a bunch of errors. 5 00:00:16,230 --> 00:00:22,260 So let's finalize that and then we will be done with the first part of our refactoring. 6 00:00:22,650 --> 00:00:28,050 So now let's go over to our main activity file. 7 00:00:28,500 --> 00:00:35,070 This year, we will need to initialize the view model because our main activity, that's where everything 8 00:00:35,070 --> 00:00:36,210 is inside of it, right? 9 00:00:36,210 --> 00:00:44,400 So the news app is inside of it, right in here, and the news app contains all of the content. 10 00:00:44,400 --> 00:00:47,490 So it contains to state the controllers and the main screen. 11 00:00:47,490 --> 00:00:53,220 So basically, this is our main screen where everything is going on. 12 00:00:53,790 --> 00:00:55,920 OK, so that's our main activity. 13 00:00:56,220 --> 00:00:59,730 And in here, we can set up our view model. 14 00:00:59,790 --> 00:01:04,410 So private will view model, which will be by view model. 15 00:01:05,630 --> 00:01:11,330 And more models, plural, where it's going to be our main view model. 16 00:01:12,050 --> 00:01:15,860 So like this and we need to import view models. 17 00:01:16,010 --> 00:01:20,780 So it's this here what we need. 18 00:01:21,140 --> 00:01:24,260 Main view model here it's activity view models. 19 00:01:24,650 --> 00:01:26,330 That's where we get this view models from. 20 00:01:28,450 --> 00:01:34,480 Which we are using in order to initialize our main view model that we created. 21 00:01:34,870 --> 00:01:42,940 So we will lift up its declaration up until the news app by creating it as a parameter in the main screen 22 00:01:42,940 --> 00:01:46,180 and new setup, and then provide as an argument where required. 23 00:01:46,510 --> 00:01:51,400 So what we're basically doing is we're setting it up at the very top level and then we're pushing it 24 00:01:51,400 --> 00:01:56,080 through to the point where it is required, where it's going to be then consumed and used. 25 00:01:56,500 --> 00:02:04,060 Because our view model contains our repository, it contains whether we are loading something, it allows 26 00:02:04,060 --> 00:02:06,700 us to get the top articles and so forth. 27 00:02:07,360 --> 00:02:14,020 So we create this in the main activity, then we are passing it down to our main screen, which then 28 00:02:14,020 --> 00:02:16,510 passes it to the news manager and so forth, right? 29 00:02:17,020 --> 00:02:20,350 So let's go ahead and do that. 30 00:02:21,920 --> 00:02:23,780 So instead of on create. 31 00:02:25,280 --> 00:02:29,270 Before we set the content, let's use our review model. 32 00:02:29,630 --> 00:02:30,650 Get top articles. 33 00:02:30,920 --> 00:02:38,420 So we're going to now load the articles already and then we're going to pass our review model to our 34 00:02:38,420 --> 00:02:39,020 news app. 35 00:02:39,710 --> 00:02:43,670 So Pastor, my model like this to the news app. 36 00:02:46,450 --> 00:02:47,110 And. 37 00:02:48,360 --> 00:02:53,970 We need to hear just pass a view model. 38 00:02:54,930 --> 00:02:57,240 Like so right with a capital M.. 39 00:02:57,750 --> 00:02:59,130 So you muddle. 40 00:03:00,200 --> 00:03:00,740 Like this? 41 00:03:01,190 --> 00:03:03,590 Well, it's important for this to work. 42 00:03:03,950 --> 00:03:10,020 This error will disappear once we have taken care of the news app because our news app will require 43 00:03:10,700 --> 00:03:13,090 the main view model inside of it. 44 00:03:13,100 --> 00:03:14,750 So here the declaration. 45 00:03:15,170 --> 00:03:21,530 So we're now passing the View model to our news app, and the news app can then pass it to the main 46 00:03:21,530 --> 00:03:22,130 screen. 47 00:03:22,640 --> 00:03:27,710 So here Main View model, which will be our mini view model. 48 00:03:28,010 --> 00:03:30,260 So this one here, we're passing it in there. 49 00:03:30,650 --> 00:03:37,460 So now the main screen gets the view model because it needed it right and it can pass it to the navigation. 50 00:03:37,820 --> 00:03:46,520 The navigation gets it and can pass it down to the bottom navigation down here and display it. 51 00:03:46,530 --> 00:03:48,620 So at this point, let me see. 52 00:03:49,310 --> 00:03:54,950 Yeah, it passes that down here, and that's where it can then be consumed inside of the composable, 53 00:03:54,950 --> 00:03:59,120 where we have the bottom menu screen and we're going to use it there. 54 00:04:01,240 --> 00:04:06,550 But before we can do that, let's get back to our main view model, because here we will move the center 55 00:04:06,550 --> 00:04:11,590 and getter for the article by category, from the Muse manager to the. 56 00:04:13,220 --> 00:04:15,110 Category two, our main view model. 57 00:04:15,680 --> 00:04:20,269 OK, so then news manager so far has taken care of that. 58 00:04:20,310 --> 00:04:21,860 Let me see this one here. 59 00:04:22,280 --> 00:04:28,730 And I'm going to cut the get article by category this one here. 60 00:04:28,740 --> 00:04:34,460 I'm going to cut it from here and put it over to my main view model. 61 00:04:35,780 --> 00:04:42,950 And then, well, we have our get, but we don't need to get it to weather, remember anymore. 62 00:04:43,460 --> 00:04:44,000 So. 63 00:04:45,560 --> 00:04:47,960 So here it will look slightly different. 64 00:04:48,050 --> 00:04:56,720 So we get article by category where we are not using a mutable state flow, so mutable state flow. 65 00:04:57,200 --> 00:04:58,700 Top news response. 66 00:04:59,000 --> 00:05:06,890 We get the article by category of type state flow with top news response and then this will not be a 67 00:05:06,890 --> 00:05:08,250 composable get. 68 00:05:08,720 --> 00:05:14,150 And this will not be a remember, but it will just be the get article by category. 69 00:05:14,600 --> 00:05:15,950 So like this? 70 00:05:17,570 --> 00:05:23,450 OK, so that's the well, how we can get to the article by category now. 71 00:05:24,260 --> 00:05:29,480 So we're not using a mutable item anymore, but the music musical state flow. 72 00:05:30,470 --> 00:05:33,530 So it's an mutable state of mutable state flow. 73 00:05:33,530 --> 00:05:33,740 No. 74 00:05:35,980 --> 00:05:44,680 All right, and then we need to create or have the method get articles by category, so we have the 75 00:05:44,680 --> 00:05:46,750 variable now let's create the function next. 76 00:05:46,810 --> 00:05:49,900 So get articles by category. 77 00:05:54,670 --> 00:06:05,320 Like this cat, the gory cat to gory, which will be of type string and then here we can set is loading 78 00:06:06,040 --> 00:06:11,350 value to true because when we are getting the articles, we should be loading. 79 00:06:11,680 --> 00:06:16,630 And once we're done loading the articles, we will set that value to be false. 80 00:06:18,310 --> 00:06:24,850 So he falls, but in between, we need to do the same thing that we did here where we launch. 81 00:06:25,390 --> 00:06:34,630 And this one is going to be get articles by category value will be repository, get articles by category 82 00:06:35,140 --> 00:06:37,870 and he will need to pass the category like this. 83 00:06:38,770 --> 00:06:42,970 Now we will get this error because it says get articles by category. 84 00:06:42,970 --> 00:06:44,440 Does this type mismatch? 85 00:06:44,650 --> 00:06:46,360 So let's look at it here. 86 00:06:46,990 --> 00:06:52,720 There were call calling or using our manager that is passed to the repository to call the get articles 87 00:06:52,720 --> 00:06:53,770 by category method. 88 00:06:53,770 --> 00:07:01,900 And you see that this method is still is using the non, let's say, non-call routine approach, which 89 00:07:01,900 --> 00:07:06,580 was all of this stuff with the call and quite complex things that we're doing. 90 00:07:06,850 --> 00:07:11,680 So we want to do the same thing as we have done in our get articles, right? 91 00:07:12,040 --> 00:07:13,990 So but then we're getting them by category. 92 00:07:14,200 --> 00:07:18,280 So let's make a quick change here to our news manager to you. 93 00:07:18,460 --> 00:07:24,850 Also, just use this very short hand code that we had there so we can get rid of all that other stuff. 94 00:07:25,210 --> 00:07:29,290 And now we can directly assign the same thing that we've done here. 95 00:07:29,290 --> 00:07:34,180 So let me just copy that and put it in here like this. 96 00:07:34,480 --> 00:07:36,540 So we net well, we get the. 97 00:07:38,460 --> 00:07:45,150 The top news responds with context with the dispatchers, and then it will not be the service, not 98 00:07:45,150 --> 00:07:52,620 get articles, but get articles by category where we now need to pass the category instead of the country. 99 00:07:52,620 --> 00:07:57,300 So category like this OK category? 100 00:08:00,280 --> 00:08:06,820 Now, if you want to use the term with context key, what would need to make this a suspend function, 101 00:08:06,820 --> 00:08:09,220 which it is because now we're using a call routine, right? 102 00:08:09,460 --> 00:08:15,750 So you see the code gets a lot briefer here, don't need to have these callback thingies and so forth. 103 00:08:15,760 --> 00:08:25,540 So that's really well, that's the twenty twenty two approach, so to speak, to working with things 104 00:08:25,540 --> 00:08:26,800 that should run in the background. 105 00:08:26,800 --> 00:08:35,530 So we use retrofit, which is very useful, but now we are going to, um, well, export death and do 106 00:08:35,530 --> 00:08:37,600 everything using call routine, so to speak. 107 00:08:39,659 --> 00:08:45,420 So it's still going to use calls, but it's going to be suspend function calls, so here you can see 108 00:08:45,420 --> 00:08:48,990 the arrow here with the Green Line in between or going through it. 109 00:08:50,010 --> 00:08:54,570 So now back in our main view model, now the error should disappear. 110 00:08:54,900 --> 00:09:05,220 But we're going to have a smarter and better for the articles by while we get articles by category, 111 00:09:05,220 --> 00:09:07,530 but we also need to have a. 112 00:09:08,550 --> 00:09:13,710 Well, have the getters and setters to get them selected categories. 113 00:09:13,890 --> 00:09:24,200 So whatever we have selected, so private fall selected, we actually used the same thing. 114 00:09:24,210 --> 00:09:30,810 So it's going to be the same thing as we've done here, but only that this will be the survey collected. 115 00:09:32,400 --> 00:09:33,210 Category. 116 00:09:36,550 --> 00:09:41,170 So select category and this one will be selected category. 117 00:09:41,650 --> 00:09:45,850 Everything else will hear it will be the article category. 118 00:09:47,560 --> 00:09:52,270 The mutable state flow will be of type article category as well. 119 00:09:53,110 --> 00:10:01,360 So here we need to pass the article category, but this will be a Nullarbor or it could be another Nullarbor. 120 00:10:01,750 --> 00:10:06,610 And we are going to set the mutable state flow personal to it. 121 00:10:07,540 --> 00:10:11,470 OK, so this will give him the state flow of article category Nullarbor. 122 00:10:12,850 --> 00:10:17,500 And then we get the selected category. 123 00:10:19,420 --> 00:10:21,400 OK, now this is the type. 124 00:10:21,580 --> 00:10:24,470 So when at the signing, we're signing at the right hand side, so. 125 00:10:25,720 --> 00:10:31,000 So what we're doing here is we're creating this new variable, which will be of type mutable state flow, 126 00:10:31,360 --> 00:10:34,000 specifically of type article category Nullarbor. 127 00:10:34,360 --> 00:10:39,250 And we're assigning null to the new tuple state law at this point. 128 00:10:39,730 --> 00:10:41,050 And then this is just. 129 00:10:42,720 --> 00:10:44,760 Setter and here we have to get her. 130 00:10:49,800 --> 00:10:57,420 And now we need to have a function which will be called once we selected a well, once selected category 131 00:10:57,630 --> 00:10:58,440 has changed. 132 00:11:02,320 --> 00:11:07,480 So we need to pass in the category of type string. 133 00:11:10,460 --> 00:11:14,630 And then we're going to set the new category. 134 00:11:16,210 --> 00:11:25,600 To come from get articles by article singular by category where we passed the category and think I called 135 00:11:25,600 --> 00:11:25,930 this one. 136 00:11:26,140 --> 00:11:27,660 Articles by category yes. 137 00:11:28,030 --> 00:11:29,590 Where 90 percent category. 138 00:11:29,920 --> 00:11:38,230 And then the selected category will be set, so its value will be overwritten with the new category 139 00:11:38,230 --> 00:11:39,160 that we're getting. 140 00:11:42,520 --> 00:11:51,820 This obviously only will work if they are of the same type, so here the selected category is of article 141 00:11:51,820 --> 00:11:52,690 category. 142 00:11:53,710 --> 00:11:56,590 Let me check some mutable state flow. 143 00:11:58,460 --> 00:12:07,610 Now and then, this is a state flow of time article category, and here we get the article by category. 144 00:12:10,470 --> 00:12:20,820 And therefore, we need to go over to our article category Enum, So article category, you know this 145 00:12:20,820 --> 00:12:22,110 one here, let me check. 146 00:12:23,700 --> 00:12:28,680 So the article category enum gives us an article category. 147 00:12:34,680 --> 00:12:38,850 And this would also be the function that I'm using, so I'm using the wrong function here. 148 00:12:39,630 --> 00:12:42,190 Get Article Missy. 149 00:12:42,300 --> 00:12:45,360 So in our article category, we had this. 150 00:12:46,360 --> 00:12:52,330 Good article category, so this method is that the one that I want to use get article category. 151 00:12:52,360 --> 00:12:52,840 All right. 152 00:12:53,320 --> 00:12:58,120 So that's what we need to pass because we wanted to get the Category Enum value based on that. 153 00:12:58,900 --> 00:12:59,350 OK. 154 00:13:02,550 --> 00:13:05,520 All right, and now in the categories themselves. 155 00:13:08,220 --> 00:13:11,820 So let's go over two categories. 156 00:13:15,610 --> 00:13:23,380 Katie, and this file, you will find that we get an error here because the newsman, as you get article 157 00:13:23,380 --> 00:13:30,250 category, doesn't seem to work anymore, so we need to replace the newsman as you hear at the top with 158 00:13:30,250 --> 00:13:31,180 our new model. 159 00:13:32,250 --> 00:13:40,140 Because as I said, we're going to cover everything via our view model, so view model, which will 160 00:13:40,140 --> 00:13:42,720 be the main view model. 161 00:13:44,680 --> 00:13:45,040 All right. 162 00:13:45,310 --> 00:13:45,760 This one. 163 00:13:46,780 --> 00:13:55,930 And then we can collect the selected category from our view model instead of getting it from our news 164 00:13:55,930 --> 00:13:56,440 manager. 165 00:13:57,130 --> 00:14:00,190 So here I'm going to replace news manager with the new model. 166 00:14:02,020 --> 00:14:03,250 And the same goes here. 167 00:14:04,980 --> 00:14:07,110 So replacing it with our view model. 168 00:14:10,830 --> 00:14:17,010 All right, and now we can go over to our news app where you will see that we're going to get errors 169 00:14:17,010 --> 00:14:20,850 because here our composable webpage displays two categories. 170 00:14:21,150 --> 00:14:25,830 The news manager doesn't seem to work anymore, obviously, because now we're not going to use the news 171 00:14:25,830 --> 00:14:26,640 manager anymore. 172 00:14:26,650 --> 00:14:28,440 We're using the view model here instead. 173 00:14:28,860 --> 00:14:33,000 So view model, which will be the. 174 00:14:34,210 --> 00:14:36,220 View model and see and like this. 175 00:14:37,940 --> 00:14:39,650 You model. 176 00:14:43,580 --> 00:14:49,460 And what do we get that view model from, we should get it here from our bottom navigation here at the 177 00:14:49,460 --> 00:14:58,490 top, where instead of walnut instead, but on top of passing our news manager, we're passing our main 178 00:14:58,490 --> 00:14:59,730 view model here. 179 00:15:00,710 --> 00:15:05,540 And it's well, let's just call it view model. 180 00:15:07,270 --> 00:15:14,530 OK, so here we can then use the view model and now accordingly, we're not going to use our news manager 181 00:15:14,530 --> 00:15:24,070 to get the articles by category and neither to get the unselected category changed, but instead we're 182 00:15:24,070 --> 00:15:27,040 going to use our new model to take care of all of that. 183 00:15:27,340 --> 00:15:32,920 So view model, good article by category what we're going to, for example, pass. 184 00:15:33,010 --> 00:15:35,080 Well, actually, it's this one here. 185 00:15:36,030 --> 00:15:38,550 So here inside of categories. 186 00:15:41,070 --> 00:15:48,240 We're going to use our on selected category changed. 187 00:15:52,710 --> 00:15:53,100 With. 188 00:15:54,250 --> 00:15:55,690 Whatever was selected. 189 00:15:55,930 --> 00:15:57,130 So with it. 190 00:15:59,340 --> 00:16:08,070 OK, so would the string that this pass to the categories, so here and then we're going to also get 191 00:16:08,070 --> 00:16:09,650 articles by that category. 192 00:16:09,660 --> 00:16:16,680 So view model thought good articles by category it. 193 00:16:17,100 --> 00:16:21,620 So here we are changing the selected option in our news app. 194 00:16:21,630 --> 00:16:28,590 So let's say we change from business to sports, for example, then this method needs to be called to 195 00:16:28,590 --> 00:16:34,230 now know which category we need to load again because the category now will have to be changed and now 196 00:16:34,230 --> 00:16:36,660 we need to load the news again. 197 00:16:37,230 --> 00:16:43,380 But then here I said that we should uncomment or comment out this business thing you hear where we get 198 00:16:43,380 --> 00:16:44,700 articles by category. 199 00:16:45,060 --> 00:16:55,470 So now we can uncomment it, but past of human or use our view model here to get articles by category. 200 00:16:55,800 --> 00:16:59,630 And then also use your model here. 201 00:17:01,870 --> 00:17:04,390 On selected category change with business. 202 00:17:06,040 --> 00:17:10,690 OK, so now let me see if I have any errors in my application still. 203 00:17:12,130 --> 00:17:17,680 Here are bottom navigation needs to get the news well, needs to get the view model as well. 204 00:17:17,800 --> 00:17:23,619 So this navigation view model that would get your top, the main one wanted to pass it directly to our 205 00:17:23,619 --> 00:17:29,500 bottom navigation, which as you see here, needs it now and then. 206 00:17:30,930 --> 00:17:31,830 That's pretty much it. 207 00:17:31,980 --> 00:17:35,970 So let's run it, and let's see, verification still runs. 208 00:17:36,210 --> 00:17:43,740 But the thing is that you see that we needed to basically set our our main view model, set up the call 209 00:17:43,740 --> 00:17:48,180 routines and then just send everything over correctly. 210 00:17:48,210 --> 00:17:48,550 Oh yes. 211 00:17:48,550 --> 00:17:50,450 So this year in the search bar. 212 00:17:51,860 --> 00:17:54,980 Let me see the search bar doesn't seem to be happy. 213 00:17:57,360 --> 00:18:00,240 But only the preview itself, which is good. 214 00:18:00,690 --> 00:18:05,580 So he had a news manager needs to get the API retrofit service. 215 00:18:06,630 --> 00:18:07,740 So let's run it again. 216 00:18:12,780 --> 00:18:16,500 Yeah, so we needed to set up all of this. 217 00:18:17,270 --> 00:18:21,930 Um, well, there's a walk around ish thing. 218 00:18:27,770 --> 00:18:33,500 And if we test it now, well, in the categories, it seems to work, the sources are being loaded. 219 00:18:33,950 --> 00:18:39,470 But our top news itself is not being displayed correctly yet, so let's check what's wrong there. 220 00:18:40,880 --> 00:18:44,630 So that should be this should be in our news app. 221 00:18:45,260 --> 00:18:46,940 Let's go over to our news app. 222 00:18:48,610 --> 00:18:49,450 Here. 223 00:18:50,640 --> 00:18:52,650 Well, we're at the bottom navigation. 224 00:18:55,950 --> 00:19:00,150 Where we have to be more precise, the top news, so here the top news. 225 00:19:01,800 --> 00:19:04,920 Needs to worry, needs to news manager. 226 00:19:10,430 --> 00:19:16,670 And I found out where it is, because the thing is, like in our news app, we said the articles right, 227 00:19:16,670 --> 00:19:25,400 with a mutable list of top news article, but then we are never actually collecting the top articles. 228 00:19:26,430 --> 00:19:29,640 Directly and assigning them. 229 00:19:30,090 --> 00:19:36,810 So here we are, getting the articles from our news response from the news manager, but what I actually 230 00:19:36,810 --> 00:19:42,690 need to do is I need to create a new article on VB. here, so I'm going to call this one up articles 231 00:19:43,290 --> 00:19:50,880 which will be using our view model thought new response dot. 232 00:19:51,210 --> 00:19:54,360 And here we need to use something called collect as state. 233 00:19:54,630 --> 00:20:00,960 Well, that will do is it will collect values from the state flow and represents its latest value via 234 00:20:00,960 --> 00:20:01,410 state. 235 00:20:01,800 --> 00:20:04,050 So we need to get the state from it. 236 00:20:04,650 --> 00:20:11,340 So basically, we collect as state, then we get the value from that state and that value contains articles 237 00:20:11,670 --> 00:20:12,600 and these articles. 238 00:20:12,600 --> 00:20:19,350 We're going to set as top articles and then instead of loading the articles directly from our news manager, 239 00:20:19,560 --> 00:20:24,720 we're going to get them now from our view model, which are stored inside of articles. 240 00:20:25,680 --> 00:20:32,760 OK, so at this point, if we run our application again, we should see our top articles as well. 241 00:20:33,150 --> 00:20:33,970 Yeah, there we are. 242 00:20:33,990 --> 00:20:39,420 So we see the top articles and we see the categories you see here. 243 00:20:40,530 --> 00:20:41,580 Well, now let me check. 244 00:20:42,270 --> 00:20:46,710 So now we need to make a change to the, uh, the other articles as well. 245 00:20:46,920 --> 00:20:47,850 So here. 246 00:20:48,960 --> 00:20:50,550 We're adding all articles. 247 00:20:50,880 --> 00:20:52,020 Then we. 248 00:20:53,070 --> 00:20:57,540 Past the data to our NEF host. 249 00:21:01,870 --> 00:21:09,340 And, well, it seems like I have to get rid of this top news article here and then let's see once again. 250 00:21:09,640 --> 00:21:14,110 So we add all articles, which will be our top articles. 251 00:21:14,560 --> 00:21:18,520 If there, if it's not them, that we're going to get them, we're going to just get a list of. 252 00:21:19,060 --> 00:21:20,020 So let me see. 253 00:21:20,020 --> 00:21:24,010 And then we go to categories and there we are two sources. 254 00:21:24,010 --> 00:21:24,880 And there we are. 255 00:21:26,050 --> 00:21:26,440 All right. 256 00:21:26,710 --> 00:21:30,490 So our news app works now with our new. 257 00:21:31,960 --> 00:21:38,320 Architecture, where we're using a view model, well, we still have our models and where we have our 258 00:21:38,320 --> 00:21:44,230 views, which are our screens, components and so forth. 259 00:21:44,800 --> 00:21:50,140 And by the way, I also realized one less thing that I would like to change in this video still, and 260 00:21:50,140 --> 00:21:56,450 that is inside of our news app once we are in the bottom navigation composable here detail index. 261 00:21:56,450 --> 00:21:58,690 So once we get into the detail page, we have this check. 262 00:21:58,690 --> 00:22:00,100 Will we're checking the query right? 263 00:22:00,400 --> 00:22:02,890 So we're going to take care of the query later on at this point. 264 00:22:02,920 --> 00:22:08,410 We're not done with it yet, but in the alt's block, we are also adding all articles from our news 265 00:22:08,410 --> 00:22:13,600 manager and we are running into problems here with our news manager because now we're using our view 266 00:22:13,600 --> 00:22:16,120 model, so we should use our view model instead. 267 00:22:16,330 --> 00:22:23,590 And this will then fix a bug where, well, if you don't do the view model there and you click on one 268 00:22:23,590 --> 00:22:27,430 of the projects or one of the details here, you will not get the details screen. 269 00:22:27,430 --> 00:22:28,120 It will crash. 270 00:22:28,780 --> 00:22:30,200 OK, and that's fixing it. 271 00:22:30,220 --> 00:22:34,210 So adding this article from the view model will fix it. 272 00:22:35,290 --> 00:22:35,680 All right. 273 00:22:35,980 --> 00:22:37,210 So that's it for this video. 274 00:22:37,270 --> 00:22:38,200 See you in the next one.