Продвинутый Redux. Redux Toolkit, RTK query, TypeScript.

Поделиться
HTML-код
  • Опубликовано: 21 сен 2024

Комментарии • 599

  • @СКОТТ-ю4б
    @СКОТТ-ю4б 2 года назад +100

    Боже, дядь, хватит пилить такое количество качественного контента, им можно просто брать и обмазываться) P.S Очень ждем полный и обновленный курс по NextJs. Для идеи - продвинутый таск менеджер)

  • @ЕвгенийЗаленский-б4ы
    @ЕвгенийЗаленский-б4ы 2 года назад +130

    Тимур, хоть я работаю с React достаточно давно, но ты мне открыл глаза на некоторые моменты в работе с toolKit. Спасибо тебе! Я думаю, что ты очень многим помог своими видео. Продолжай в том же духе и миллион тебе подписчиков! P.S. Я позаимствовал у тебя некоторые идеи касательно файловой структуры. Она очень продумана!

  • @apexnuts9785
    @apexnuts9785 2 года назад +113

    единственный сэнсэй, которого я смотрю не на 1.5, а на 0.75)

    • @caiiiook6858
      @caiiiook6858 2 года назад +4

      лол, я всех смотрю на 1.75, а его на 1.5 ))

    • @Victor-il9gm
      @Victor-il9gm 2 года назад

      жиза ++++

    • @neys4171
      @neys4171 2 года назад +3

      Я смотрю его на скорости 2 и мой мозг работает на 200%

    • @whitewolf9298
      @whitewolf9298 Год назад

      @@neys4171 воу

    • @ggadoctb
      @ggadoctb Год назад

      1.25

  • @kr4chinin771
    @kr4chinin771 2 года назад +48

    Для тех, у кого возникает ошибка с типизацией "e" в try...catch (e) {...} (15:14):
    У ошибок в TS по умолчанию тип unknown, она может быть чем угодно (грубо говоря, мы можем сделать throw new Promise(() => {}) и это будем ошибка с типом Promise или, аналогично, throw 7 и это будет ошибка с типом number).
    Для того, чтобы избежать проблем с типизацией и крашей в рантайме я рекомендую использовать следующую функцию для получения message из error:
    function getErrorMessage(error: unknown) {
    if (error instanceof Error) return error.message
    return String(error)
    }
    Далее делаем следующее:
    try {
    // логика
    } catch (e) {
    dispatch(userSlice.actions.usersFetchingError(getErrorMessage(e)))
    }

    • @soulbringer6521
      @soulbringer6521 2 года назад +8

      Можно просто выполнить приведение типов:
      dispatch(userSlice.actions.usersFetchingError((e as Error).message))

    • @kr4chinin771
      @kr4chinin771 2 года назад +6

      @@soulbringer6521 я описал в начале комментария, что ошибка не всегда может быть типа Error и иметь поле message. Обычно, конечно, это так, но если произойдет что-то непредвиденное - приложение сломается. Лучше сразу привыкать к best practice, а не рефлекторному применению any и as

    • @soulbringer6521
      @soulbringer6521 2 года назад +2

      @@kr4chinin771 Полностью согласен. Был невнимателен.

    • @ЯнаПронько-ы7ъ
      @ЯнаПронько-ы7ъ Год назад

      Спасибо)

    • @MS-jh3qe
      @MS-jh3qe Год назад +1

      Потратил больше часа, поэому пожалуй оставлю
      try {
      // логика
      } catch (e) {
      return thunkAPI.rejectWithValue("Ошибка загрузки пользователей");
      }
      _______
      ...
      .addCase(fetchUsers.rejected, (state, action) => {
      state.isLoading = false;
      if (typeof action.payload === 'string') {
      state.error = action.payload;
      } else {
      state.error = "Неизвестная ошибка";
      }
      });

  • @jaloliddinhazratqulov891
    @jaloliddinhazratqulov891 2 года назад +29

    Тимур самый лучший сэнсей учител
    Великолепный и очень крутой урок

  • @ЭзамАппаева
    @ЭзамАппаева 2 года назад +16

    УАУ! Тимур, спасибо большое за видос!!! Предчувствую, что ближайший час будет просто мега крутой !!!!!!!

  • @fullname9437
    @fullname9437 2 года назад +7

    Поставил сразу лайк, как только в рекомендациях увидел свежий видос! Не сомневаюсь, что там топ, но просмотр оставил на вечер )

  • @xphnx4085
    @xphnx4085 2 года назад +25

    Отлично! Очень рад, что в своё время наткнулся на твой канал. Огромный пласт полезной информации.

  • @zhony-pony
    @zhony-pony 2 года назад +6

    Еще не смотрел, сначала посмотрю твой ролик по тайпскрипту, потом вернусь сюда!
    Уверен, ролик отличный, лайк авансом)

  • @user-hd3ov5lj1u
    @user-hd3ov5lj1u 2 года назад +10

    я просто не знаю, как тебя отблагодарить, мне как раз нужен был такой видос!!! ты меня сильно выручил, ОГРОМНОЕ ТЕБЕ СПАСИБО

  • @котток-г6й
    @котток-г6й 2 года назад +10

    недавно неделю убил на то, чтобы разобраться конкретно в такой же связке)
    контент как всегда топ!

  • @sergeyecho127
    @sergeyecho127 Год назад +7

    Супер информативно и понятно. Порой слишком быстро, но думаю намного лучше отмотать назад, чем слушать нудятину. Спасибо огромное.

  • @lekost13
    @lekost13 2 года назад +5

    Тимурыч, от души))
    Я был одним из тех, кто просил это видео: Redux Toolkit Advanced Edition 😁

  • @ЕвгенийКутовой-й6ы
    @ЕвгенийКутовой-й6ы 2 года назад +8

    Тимур, большое спасибо, очень ждал.
    Обязательно завтра утром просмотрю!

  • @programming5944
    @programming5944 2 года назад +4

    Redux понял только благодаря твоим видосам и уже полгода активно использую его на проекте, теперь посмотрю в сторону toolkit

  • @apexnuts9785
    @apexnuts9785 2 года назад +8

    сильный ролик! Спасибо за информацию, буду использовать redux toolkit

  • @f1y1xz
    @f1y1xz 2 года назад +5

    Я два дня разбирался с тулкитом, не мог мутации побороть и обновление после них, теперь дело сдвинется с мертвой точки. Спасибо.

  • @vlad-zf1ev
    @vlad-zf1ev 2 года назад +3

    Еееее! Мои просьбы были услышенны)) сколько я оставил комментов автору чтобы он запилил про тулкит видос!!
    Приятно когда тебя слышат!

  • @АртемЕльденев-ш1к
    @АртемЕльденев-ш1к 2 года назад +4

    Блин, спасибо большое за это видео. Думаю, те кто не писал на чистом Redux не поймут, как облегчает работу toolKit, особенно RTK, я писал на чистом redux и можно сказать, создавал состояния для нескольких категорий (ну тип, для пользователей, для постов, для документов и т.п.), их достаточно много, и на каждую такую категорию надо 4 файла, как минимум (reducer, actions, types (если typescript), service) и их создание сводилось к copy/paste и 10 минутному переименованию, поэтому, когда вместо этих 4 файлов, нужен всего один (который по размеру меньше каждого из тех 4), это просто очень круто, спасибо. Хотелось бы, чтобы ты описал как переопределять baseQuery, например, для добавления accessToken-а в заголовок, или для переавторизации, в случае, если accessToken перестал действовать, просто, мне это надо было в моем приложении, в принципе у меня и так получилось найти как это сделать, но если бы было видео на эту тему, было бы супер, еще раз спасибо

    • @tutnichegonet
      @tutnichegonet Год назад

      а где нашел инфу по авторизации, подскажи плиз)

  • @sergeysamius1128
    @sergeysamius1128 2 года назад +7

    Огромное спасибо! Redux toolkit TypeScript RTK query

  • @ИванДанилов-д5р
    @ИванДанилов-д5р 2 года назад +6

    Круто, молодец RTK Query очень понятно рассказал. Нравится стиль твоего изложения. Без воды, коротко, по сути. Продолжай.
    Запили видос по Material UI или StoryBook плиз

  • @АраГорн-ж5ы
    @АраГорн-ж5ы 2 года назад +6

    Спасибо, как раз хотел что-нибудь по редаксу посмотреть!

  • @tototomay
    @tototomay 2 года назад +14

    Как всегда, Тимур на высоте!
    Максимально качественный контент в сжатые тайминги.
    Уважуха и респект тебе))

  • @user-zn5ky3fw5h
    @user-zn5ky3fw5h 2 года назад +10

    Привет!)
    Классный ролик, спасибо!)
    Очень понравилась часть про RTK Query, я сам ее почему-то обделил вниманием, когда знакомился с тулкитом, теперь буду нагонять!)
    Успехов в развитии и продвижении канала!)

  • @olehmudriy9308
    @olehmudriy9308 2 года назад +5

    Лайк заочно!
    Вот и цель на вечер.
    Спасибо тебе, мой друг!

  • @alexshubin209
    @alexshubin209 2 года назад +5

    Я писал работу с сервером по запросам post get put delete в редакс тулкит и не знал что можно просто это сделать с rtk query, спс за видос

  • @bogeyman000
    @bogeyman000 2 года назад +3

    Какая лютая тема этот rtk query, обяхательно нужно будет переписать под него проект :D

  • @Evgeny..
    @Evgeny.. 2 года назад +3

    Тимур! Огромное спасибо тебе за мега качественный контент. redux, Redux toolkit & TypeScript & RTK query.

  • @treyor5670
    @treyor5670 2 года назад +20

    Буду не первым и не последним кто это скажет, благодаря твоим видео я нашел первую работу. Спасибо, что ты есть на ютубе
    P.s. видео трижды супер, как раз на проекте используется тулкит

    • @FlashViolet
      @FlashViolet 2 года назад +1

      удаленка?

    • @Evgeny..
      @Evgeny.. 2 года назад +1

      Класс, мне тоже нужно было подключить просто redux к мини проекту на работе и я по видео Тимура сделал это и понял много вещей)

    • @indigosay
      @indigosay Год назад

      как успехи?)

  • @iliakhablak9203
    @iliakhablak9203 2 года назад +6

    Как всегда великолепный ролик! Redux Toolkit разобран очень подробно. Спасибо ))

  • @alexandrchazov6185
    @alexandrchazov6185 2 года назад +4

    Спасибо за ликбез (React Redux Toolkit RTK query TypeScript)

  • @АлександрМорозов-т5б
    @АлександрМорозов-т5б 2 года назад +5

    Спасибо, Тимур. После каждого твоего видео начинаю переписывать свой проект =)

  • @MOTICHITPRO
    @MOTICHITPRO 2 года назад +38

    Бро! Я сейчас просто посмотрел подряд 7-8 часов контента с твоего канала за раз, просто не смог оторваться до конца - это конечно топ. Тушишь все каналы своим контентом))

    • @rustamakhmetyanov4404
      @rustamakhmetyanov4404 Год назад

      @Pasha Yasinskiy там все платное)

    • @НиколайТарасов-р2х
      @НиколайТарасов-р2х Год назад

      ​@Pasha Yasinskiyминус один конкурент​

    • @ruslanragilo7079
      @ruslanragilo7079 Год назад +1

      @Pasha Yasinskiyовно

    • @ДанилДмитриев-я5м
      @ДанилДмитриев-я5м Год назад

      как успехи

    • @Artem_Arutunyan
      @Artem_Arutunyan 11 месяцев назад

      @@pashayasinskiy4972редгруп хуже. Он ничего не объясняет и подача материала настолько скоростная, что надо смотреть видео на скорости 0.001, но все равно ничего не понятно. Для изучения худший канал

  • @ИлхомТураев-п2к
    @ИлхомТураев-п2к 2 года назад +10

    Я еще смотрел , но уже палец вверх поставил

  • @Санскритдляпреданных

    Лайк не глядя. Я ждал это видео. Спасибо!

  • @scorpion11133
    @scorpion11133 2 года назад +6

    Сразу лайк и коммент! Шикарный контент! Спасибо

  • @dmytrovoronov9320
    @dmytrovoronov9320 2 года назад +8

    Лайк не глядя. Давно ждал такой стек.

  • @Alex__88
    @Alex__88 2 месяца назад +2

    Крутое видео! Спасибо большое!
    Только redux-toolkit обновился. Сейчас в extraReducers нужно прописывать функцию с параметром builder, а не объект:
    extraReducers: builder => {
    builder
    .addCase(fetchUsers.pending.type, (state) => {
    state.isLoading = true;
    })
    .addCase(fetchUsers.fulfilled.type, (state, action: PayloadAction) => {
    state.isLoading = false;
    state.error = '';
    state.users = action.payload;
    })
    .addCase(fetchUsers.rejected.type, (state, action: PayloadAction) => {
    state.isLoading = false;
    state.error = action.payload;
    });
    },

  • @Giri-16108
    @Giri-16108 2 года назад +5

    Спасибо, было очень полезно, буду использовать Квери!

  • @MrKirTer
    @MrKirTer 2 года назад +4

    Отлично!
    Кратко, информативно и по делу.
    Спасибо.

  • @AkiroVanovi
    @AkiroVanovi 5 месяцев назад +5

    у кого ошибка Uncaught Error: The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead, разрабы изменили синтаксис, теперь нужно добавлять колбэк builder и писать addCase. Т.е. код должен выглядеть так:
    extraReducers: (builder) => {
    builder;
    builder.addCase(
    fetchUsers.fulfilled.type,
    (state, action: PayloadAction) => {
    state.isLoading = false;
    state.error = "";
    state.users = action.payload;
    }
    );
    builder.addCase(
    fetchUsers.rejected.type,
    (state, action: PayloadAction) => {
    state.isLoading = false;
    state.error = action.payload;
    }
    );
    builder.addCase(fetchUsers.pending.type, (state) => {
    state.isLoading = true;
    });
    }

  • @bulbaway
    @bulbaway 2 года назад +6

    Спасибо за урок. Очень полезная информация в сжатом виде с примерами без монотонного изучения документации библиотеки.

  • @Mjogan
    @Mjogan 2 года назад +3

    пишу этот комментарий в знак уважения к автору для продвижения. Спасибо тебе, Тимур!

  • @dakebakeuly5193
    @dakebakeuly5193 2 года назад +10

    Лайк не глядя, у Тимура всегда годный контент

  • @globalist1877
    @globalist1877 2 года назад +6

    Просто нет слов. Браво!!!

  • @UdavPit
    @UdavPit 2 года назад +2

    Спасибо, отлично разложено про redux-toolkit и rtk query, как раз то чего мне не хватало для четкого понимания как его использовать

  • @ГульзанаКаткелдиева-ъ4ь

    Спасибо за видео, полезный и нужный урок, постоянно слежу за вашей страничкой

  • @DakoMen
    @DakoMen 2 года назад +8

    Спасибо Вам большое Тимур за ваш труд.

  • @sergegrey2437
    @sergegrey2437 2 года назад +7

    Очень хороший урок. Узнал много нового. Спасибо!)

  • @anton-vr5xw
    @anton-vr5xw 2 года назад +8

    Топ, впрочем, как и всегда, спасибо огромное 🤙

  • @vitalyshevchenko5030
    @vitalyshevchenko5030 2 года назад +7

    Спасибо огромное за содержательное видео! Без воды, всё по делу! И такими порциями, которые можно усваивать!

  • @Labelzzshow
    @Labelzzshow 2 года назад +4

    RTK query конечно мощная штука. Спасибо!

  • @МаксимБоровик-ы9б
    @МаксимБоровик-ы9б 2 года назад +6

    Отлично!!!! Дождался)))) Спасибо!

  • @МарияЗахарова-ы8ц
    @МарияЗахарова-ы8ц 2 месяца назад

    Друг, спасибо тебе. Уже вроде писала комент, но это видео - моя библия по rtk. когда только начинала учить - заходила смотреть, повторила, попробовала сама сделать, записала, но ничего не поняла) и вот я уже джун разработчик, которого озадачили переписать на rtk. посмотрела это видео еще раз и достигла просветления. дай бог тебе здоровья и много денег.

  • @helenit4365
    @helenit4365 2 года назад +3

    Поздравляю, Тима!!!!! 50к подписчиков!!!👌🎊🎉👍

  • @powerpuff_luv
    @powerpuff_luv 2 года назад +5

    вот что-что, а этот видос я точно ждал)

  • @infavi
    @infavi 2 года назад +4

    Невероятный труд, вы лучший

  • @VoyagerVR
    @VoyagerVR 2 года назад +3

    Офигенный редкий контент! Спасибо за разбор актуальных технологий!

  • @liroq94
    @liroq94 2 года назад +12

    Спасибо тебе большое за твой огромный труд. Маловато просмотров для такого видео

    • @yakut54
      @yakut54 2 года назад

      контент отнюдь не для новичков

  • @aleksandrzelenskiy4000
    @aleksandrzelenskiy4000 2 года назад +5

    Е-е-е Redux, Redux Toolkit! Топ!

  • @СергейВер-и9ю
    @СергейВер-и9ю 2 года назад +4

    Топ, давно писал, что redux давно поменялся.

  • @f1y1xz
    @f1y1xz 2 года назад +8

    И снова ты лучший.

  • @samerlagha1609
    @samerlagha1609 2 года назад +6

    Спасибо 🙆‍♂️ уверен материал супер 👍

  • @anton-vr5xw
    @anton-vr5xw 2 года назад +3

    50к 😍🙌 поздравляю !))))

  • @nemirovandrei
    @nemirovandrei 2 года назад +1

    Кайф. Спасибо за видос !! Как раз вчера решил РТК вместо обычного редакса в проект вкатить

  • @vladimir_-_
    @vladimir_-_ 2 года назад +5

    Спасибо за Огромную проделанную работу

  • @kamik0t0_yt83
    @kamik0t0_yt83 2 года назад +29

    Ролик хороший, но уж очень краткий и некоторые моменты понять невозможно если не читать документацию. Мои пожелания делать видео не "галопом по европам" а глубже разбирать тему с большим количеством примеров и объяснений. Далее согласно документации extraReducers с TypeScript следует реализовывать через builder: We recommend using the builder callback API as the default, especially if you are using TypeScript.

  • @andrespez7548
    @andrespez7548 2 года назад +6

    Отличный мини-курс!

  • @МихаилСедов-ж7ш
    @МихаилСедов-ж7ш 8 месяцев назад +1

    Спасибо большое за подробное пособие по технологии, успехов Вам в работе!)

  • @npa040493
    @npa040493 2 года назад +6

    Очень качественно объяснил все, отличное видео, спасибо)

  • @demirelkd
    @demirelkd 2 года назад +8

    Ну монстр 💪спасибо

  • @yuryitikhonoff9631
    @yuryitikhonoff9631 2 года назад +6

    Yoo-hoo. Thanks a lot for your efforts. Good job.

  • @HIghtowerSever
    @HIghtowerSever 2 года назад +5

    Ты красавчик, Ulbi. Отвечаю!

  • @ivanmiarkulau8320
    @ivanmiarkulau8320 2 года назад +1

    Очень ёмко и целостно рассказал о Redux Toolkit и RTK query! Спасибо большое, Тимур!)

  • @victor_bozhok
    @victor_bozhok 2 года назад +1

    Этот канал - клондайк для фронтендщика... Тимур, спасибо тебе за эти драгоценные знания!

  • @Unnamed-r8x
    @Unnamed-r8x 2 года назад +5

    Привет Тимур, спасибо тебе.

  • @СергійПіка-е7б
    @СергійПіка-е7б 2 года назад +5

    Какой же ты крутой!!! (тож хочу ето все знать)

  • @Marv3L_777
    @Marv3L_777 2 года назад +4

    Спасибо !!! Очень крутой коонтенттт

  • @IT-Svyatoslav
    @IT-Svyatoslav 2 года назад +6

    Респект и благодарность.

  • @shyma_grasious
    @shyma_grasious 2 года назад +5

    вижу улби тв - ставлю лайк

  • @iharberasneu2905
    @iharberasneu2905 2 года назад +3

    Огромное спасибо за подробный контент. Правда день убил на разбор видео и настройку store под себя.

  • @itpro952
    @itpro952 2 года назад +3

    Redux toolkit мощная штука, а твои ролики как всегда насыщенные и понятные, продолжай в том же духе

  • @ПопівчакБогдан
    @ПопівчакБогдан 2 года назад +2

    Большое спасибо за качественньій материал!

  • @ridl27
    @ridl27 2 года назад +1

    огонь! просто лучший! не думал, что в ру-сегменте будет такая годнота!!!

  • @antonkiryienka2862
    @antonkiryienka2862 2 года назад +7

    Годнота, так держать!

  • @egorpobylets6597
    @egorpobylets6597 2 года назад +3

    Спасибо огромное!!!!

  • @yaroslav8609
    @yaroslav8609 2 года назад +3

    как тут поставить 100 лайков)) полезнее контента еще не видел

  • @АндрійКачмарик-я6п
    @АндрійКачмарик-я6п 2 года назад +2

    Спасибо за видос, ты один из лучших кто пилит хороший контент!

  • @hutoryanin
    @hutoryanin 2 года назад +4

    Здравствуй Тимур, отличный контент. Досмотрел, не всё понял, позже буду пересматривать... а то привык к mobX, а с редаксом оказывактся туго)
    *Л а й к* за отличное видео
    и
    *Р. е. с. п. е. к. т.*

  • @school9051
    @school9051 8 месяцев назад

    Обычно использую MobX, но по вакансиям просят Redux и RTK query, а я с ними не работал и все документации были сложноватыми, чтобы быстро разобраться в этом. А это видео за 43 минуты дало мне больше чем два дня попыток понять Redux) Спасибо большое за видео и за труд!

  • @РавшанДавлатов-ц7г
    @РавшанДавлатов-ц7г 2 года назад +4

    Очень круто, спасибо большое))

  • @xarsber9597
    @xarsber9597 2 года назад +17

    Как всегда лучший видос в рунете по теме !!!
    А RN не планируется ? Продвинутый курс по традиции =)

  • @Almas-2002
    @Almas-2002 2 года назад +7

    Круто , спасибо

  • @Polite_person_
    @Polite_person_ 2 года назад +3

    Комент в поддержку канала! p.s. Спасибо.

  • @adelinaromanova8353
    @adelinaromanova8353 2 года назад +6

    Спасибо,Тимаааа!!!🤩🥳

  • @pavloskuibida6292
    @pavloskuibida6292 2 года назад +2

    низкий поклон от джуна тебе Барин!

  • @mironmakeev7846
    @mironmakeev7846 2 года назад +15

    Тимур, 95% материалов на твоем канале требуют хороших знаний JavaScript, очень хотелось бы увидеть курс по JS в великолепном формате "фундаментальный"

    • @shyma_grasious
      @shyma_grasious 2 года назад +2

      поддерживаю. Особенно где толково рассказываются про асинхронщину, прокси, декораторы, итераторы, генераторы и тд

    • @radikovichkz2470
      @radikovichkz2470 2 года назад +3

      Пожалуйста не стоит делать по Java script дотошных уроков как Владилена Минина. Это все можно получить из книг и официальной документации. Лучше какие то сложные моменты. Как структурировать код на чистом vanilla. Хотелось бы видео о том как не стоит делать новичкам

    • @SeganMert
      @SeganMert 2 года назад +2

      @@radikovichkz2470 Не думаю что это тоже стоит, как раз Тимур делает с подходом на то что ты уже знаешь, только на взгляд прекрасных инструментов ухватывая самое необходимое, с его гайдиков выходит так что ты после уже не плаваешь в документации, а уже спокойно с ней работаешь со знаниями который получаешь в видосе, это наверное единственный канал, на который заходишь именно за четкими знаниями, когда не особо есть силы на английское комьюнити

    • @mustonenm
      @mustonenm 2 года назад +2

      Согласен, курсами по JS уже весь инет завален, а вот по продвинутым темам - действительно мало

  • @sergsergey4251
    @sergsergey4251 2 года назад +5

    Спасибо за очередное полезное видео

  • @ArtikMan1994
    @ArtikMan1994 Год назад +2

    Видео очень хорошее. Но с тегами по РТК квери - немного опасно вешать одинаковый тег на все ендпоинты. Обновляя пост или удаляя его, - ты сбрасываешь кэш всех постов, а не конкретного поста. В документации в продвинутом разделе по РТК квери очень хорошо об этом расписано. Я понимаю, что тут только база и для максимальной простоты. С меня лайк=) А подписка оформлена уже давно=)

  • @eldartailov1473
    @eldartailov1473 2 года назад +5

    как раз искал тутор по тайпскр + тулкит. Ща ляну, отпишу как оно

    • @eldartailov1473
      @eldartailov1473 2 года назад +1

      голосом по европам, но в целом самый разборчивый ролик

    • @danildemchenko6004
      @danildemchenko6004 2 года назад +1

      @@eldartailov1473 эх, а мы то ждали, что автор бесплатно выложит всеобъемлющий ролик на 5 часов((((

    • @eldartailov1473
      @eldartailov1473 2 года назад +1

      @@danildemchenko6004 тоже правда