1 00:00:02,110 --> 00:00:07,300 Jadi untuk memastikan bahwa kami keluar saat token kedaluwarsa, saya akan menambahkan fungsi baru dalam 2 00:00:07,300 --> 00:00:08,150 tindakan auth 3 00:00:08,160 --> 00:00:13,270 kami, jadi di folder tindakan di auth. File js, saya akan menambahkan fungsi baru di sini 4 00:00:13,270 --> 00:00:20,950 di mana saya ingin mengatur penghitung waktu yang pada dasarnya kedaluwarsa ketika token kedaluwarsa. Jadi kita dapat memanggil set logout timer ini sebagai contoh 5 00:00:21,220 --> 00:00:21,840 dan 6 00:00:21,880 --> 00:00:31,410 di sana, saya berharap untuk mendapatkan waktu kedaluwarsa dan di sini, kita dapat menggunakan set timeout lama yang baik yang Bereaksi asli mendukung dalam 7 00:00:31,410 --> 00:00:38,630 versi Javascript untuk mengatur timer yang kedaluwarsa setelah waktu ini dan katakanlah ini adalah nilai dalam milidetik, jadi 8 00:00:38,630 --> 00:00:43,280 itu hanya asumsi yang saya miliki dan kami harus memastikan bahwa kami 9 00:00:43,280 --> 00:00:47,530 meneruskan data dalam milidetik karenanya. Setelah fungsi ini di 10 00:00:47,540 --> 00:00:55,480 sini akan mengeksekusi setelah token berakhir dan di sana, pertanyaannya adalah sekarang apa yang kita lakukan di sana? 11 00:00:56,060 --> 00:00:57,890 Pada akhirnya, saya ingin mengirim logout 12 00:00:57,900 --> 00:00:58,980 di sini, kan? 13 00:00:58,980 --> 00:01:05,490 Jadi karena itu set timer logout mungkin seharusnya bukan fungsi normal tetapi sebenarnya di sini, saya 14 00:01:06,120 --> 00:01:10,370 akan memiliki fungsi yang mengambil keuntungan dari Redux Thunk, jadi di 15 00:01:10,590 --> 00:01:16,680 mana kita memiliki fungsi ini dalam fungsi di mana fungsi dalam ini dikirim sebagai argumen 16 00:01:17,400 --> 00:01:20,010 dan karenanya setelah ini tugas async 17 00:01:20,010 --> 00:01:27,660 selesai, setelah penghitung waktu ini kedaluwarsa, kami dapat mengirimkan logout, sehingga kami dapat mengirim hasil dari pembuat tindakan ini 18 00:01:27,660 --> 00:01:29,510 yang merupakan tindakan ini 19 00:01:29,670 --> 00:01:32,890 pada akhirnya, sehingga terjadi ketika penghitung waktu selesai. 20 00:01:32,910 --> 00:01:38,670 Sekarang ketika kita melakukan logout, saya juga ingin menghapus timer yang berjalan karena mungkin kita memiliki 21 00:01:38,670 --> 00:01:45,760 timer yang diatur secara otomatis di sini yang belum kita atur tetapi kita akan segera melakukannya, maka saya ingin menghapus timer 22 00:01:45,760 --> 00:01:49,110 itu ketika kita secara manual keluar sehingga Saya tidak memiliki 23 00:01:49,120 --> 00:01:55,670 pengatur waktu yang sedang berjalan meskipun itu mubazir. Jadi kita dapat menambahkan variabel baru mungkin di 24 00:01:55,670 --> 00:02:02,340 bagian atas file di sini yang saya akan beri nama timer yang tidak diinisialisasi awalnya dan kemudian 25 00:02:02,340 --> 00:02:08,760 di sini ketika kita mengatur timer, saya akan mengatur hasil dari timeout ke timer atau 26 00:02:08,850 --> 00:02:12,860 menyimpan hasil itu dalam timer yang merupakan pointer pada timer 27 00:02:12,860 --> 00:02:21,920 ini dan menambahkan fungsi baru, mungkin di sini, hapus timer logout yang sekarang menjadi fungsi normal, bukan fungsi yang mendapatkan fungsi internal pengiriman 28 00:02:21,950 --> 00:02:29,510 ini tetapi fungsi normal di mana saya hanya memanggil timer timeout yang jelas dan Timer adalah variabel yang menunjuk 29 00:02:29,510 --> 00:02:30,800 pada timer. 30 00:02:30,800 --> 00:02:36,080 Saya hanya ingin memeriksa apakah timer ada, jika tidak terdefinisi dan jika tidak 31 00:02:36,080 --> 00:02:41,620 terdefinisi, saya akan menyebutnya, clear timeout adalah fungsi bawaan Javascript untuk menghilangkan timer itu. 32 00:02:41,840 --> 00:02:43,290 Jadi dengan itu, 33 00:02:43,290 --> 00:02:47,770 kita dapat menghapus timer jika kita tidak membutuhkannya lagi dan saya ingin menyingkirkannya 34 00:02:47,810 --> 00:02:56,540 setiap kali kita logout, jadi setiap kali ini terjadi di sini, saya akan memanggil timer logout yang jelas dan satu hal lain yang perlu saya lakukan 35 00:02:56,540 --> 00:03:00,650 ketika Saya logout adalah saya harus menghapus penyimpanan async saya tentu saja. 36 00:03:00,650 --> 00:03:09,760 Jadi di sini, saya dapat memanggil penyimpanan async menghapus data pengguna item, lagi menggunakan pengenal yang sama yang saya gunakan untuk menyimpan 37 00:03:09,760 --> 00:03:10,470 data. 38 00:03:10,540 --> 00:03:12,550 Jadi saya menggunakan data pengguna di 39 00:03:12,550 --> 00:03:18,010 sana, saya perlu menggunakan pengenal yang sama untuk membersihkannya. Sekarang hapus item mengembalikan janji dan kita 40 00:03:18,010 --> 00:03:18,680 bisa 41 00:03:18,730 --> 00:03:25,080 menunggu untuk ini, dalam hal ini kita perlu mengembalikan sintaksis dalam di mana kita mendapatkan pengiriman dan 42 00:03:25,090 --> 00:03:31,600 kita melakukan tugas async kita, jadi kita pindahkan kode ini ke sini dan kemudian di sini kita 43 00:03:31,670 --> 00:03:33,380 dapat mengirimkan ini tindakan. 44 00:03:33,380 --> 00:03:36,500 Kita bisa melakukan semua itu jika kita tertarik pada 45 00:03:36,500 --> 00:03:41,970 hasil penghapusan item tetapi di sini saya tidak tertarik, saya hanya akan memecat ini dan saya 46 00:03:42,140 --> 00:03:48,560 tidak menunggu janji ini selesai, sebagai gantinya saya segera mengembalikan objek tindakan baru ini dan saya percaya ini akan selesai. 47 00:03:48,590 --> 00:03:51,440 Sekarang tentu saja Anda dapat merestrukturisasi ini tetapi itulah cara 48 00:03:51,440 --> 00:03:57,380 saya akan melakukannya, ini akan menghapus data dari penyimpanan lokal kami. Jadi dengan itu, logout melakukan ini, kami memiliki 49 00:03:57,380 --> 00:04:03,450 fungsi timer logout yang mengatur timer yang melakukan logout setelah ini berakhir, sekarang kami hanya perlu memastikan bahwa 50 00:04:03,450 --> 00:04:07,920 kami mengirimkan pembuat tindakan pencatat waktu logout set ini di sini, bahwa kami menggunakan 51 00:04:07,920 --> 00:04:15,510 pembuat tindakan ini dan Saya ingin menggunakan ini ketika kami mengautentikasi. Jadi kita punya tindakan 52 00:04:15,510 --> 00:04:22,630 otentikasi ini di sana-sini pada akhirnya, saya perlu mengirim set 53 00:04:22,800 --> 00:04:30,770 timer logout serta ini di sini. Jadi di sana, saya sekarang akan benar-benar menggunakan sintaks 54 00:04:30,770 --> 00:04:37,280 yang berbeda ini di mana kita mendapatkan fungsi dalam ini yang menerima pengiriman, sehingga di sini saya 55 00:04:37,760 --> 00:04:42,940 dapat mengirim set timer logout sehingga ini di sini dipicu dan tentu saja 56 00:04:45,740 --> 00:04:51,590 ini juga berarti bahwa di sini alih-alih mengembalikan ini, kami juga perlu mengirim ini, jadi 57 00:04:51,590 --> 00:04:59,970 kami mengirim dua tindakan di sini yang benar-benar baik-baik saja. Jadi saya mengatur timer saya dan saya kemudian 58 00:05:00,390 --> 00:05:02,270 mengirimkan tindakan otentikasi. 59 00:05:02,290 --> 00:05:08,890 Sekarang tentu saja, penghitung waktu logout perlu tahu berapa lama waktu yang diperlukan, waktu kedaluwarsa diperlukan 60 00:05:08,890 --> 00:05:17,110 dan saya berharap untuk mendapatkan ini, waktu kedaluwarsa ini hanya untuk mencampur nama, sebagai argumen di sini dalam otentikasi sehingga saya 61 00:05:17,110 --> 00:05:20,920 dapat meneruskan ini di sini ke timer logout saya. 62 00:05:20,920 --> 00:05:27,400 Itu berarti bahwa setiap tempat di mana kami mengirimkan tindakan autentikasi atau tempat kami menggunakan pembuat tindakan ini, saya harus 63 00:05:27,400 --> 00:05:33,100 mengatakan, ini setiap tempat di mana kami melakukan ini tidak hanya perlu memberikan userId dan token tetapi 64 00:05:33,280 --> 00:05:35,230 juga waktu kedaluwarsa dan yang dimulai 65 00:05:35,470 --> 00:05:38,580 di sini dengan Daftar. Ketika kami mendaftar, 66 00:05:38,590 --> 00:05:46,800 kami memiliki tanggal kedaluwarsa di sini dan kami mengirimkan autentikasi. Sekarang otentikasi juga memerlukan waktu 67 00:05:46,800 --> 00:05:47,670 kedaluwarsa. 68 00:05:47,670 --> 00:05:52,440 Sekarang hal yang baik adalah di sini sangat mudah untuk mengetahui kapan ini 69 00:05:52,440 --> 00:05:58,730 kedaluwarsa karena kita memilikinya di data respons, di sana kita memiliki ini kedaluwarsa di bidang yang tentu 70 00:05:58,830 --> 00:06:07,970 saja sebuah string, jadi dengan parseInt, kita dapat mengonversinya menjadi angka dan kemudian ini akan dalam hitungan detik, otentikasi dan set nilai penghitung waktu logout 71 00:06:07,970 --> 00:06:11,480 dalam milidetik, jadi saya akan mengalikannya dengan 1000 72 00:06:11,690 --> 00:06:19,540 dan saya juga akan menambahkan ini dalam login tentu saja. Di sana, saya juga akan menambahkan itu 73 00:06:19,580 --> 00:06:23,890 sebagai argumen ketiga di sini sehingga untuk masuk 74 00:06:24,110 --> 00:06:31,490 saat kami mengirim tindakan autentikasi ini, kami juga meneruskan waktu kedaluwarsa kami yang kami 75 00:06:31,490 --> 00:06:36,520 dapatkan kembali dari Firebase. Sekarang kita juga memiliki satu tempat lain di mana 76 00:06:36,530 --> 00:06:38,660 kita perlu melakukan itu dan itu adalah 77 00:06:38,660 --> 00:06:45,740 layar pembuka karena di sana kita juga mengirim otentikasi dan di sini kita perlu menghitung waktu yang tersisa karena ini akan muncul kapan pun 78 00:06:45,950 --> 00:06:47,410 kita memulai ulang aplikasi, 79 00:06:47,420 --> 00:06:51,080 jadi di sini kita tidak tahu berapa lama waktu yang dibutuhkan token 80 00:06:51,080 --> 00:06:53,100 untuk kedaluwarsa dan kami perlu menghitungnya. 81 00:06:53,150 --> 00:07:02,060 Jadi di sini saya dapat menghitung waktu kedaluwarsa pada dasarnya mengambil tanggal kedaluwarsa yang merupakan objek tanggal dan panggilan get 82 00:07:02,060 --> 00:07:08,090 time di atasnya yang memberi saya timestamp dalam milidetik sejak awal waktu dan 83 00:07:08,090 --> 00:07:09,070 dari itu 84 00:07:09,800 --> 00:07:14,940 saya harus mengurangi timestamp saat ini mendapatkan waktu, jadi cap waktu 85 00:07:15,020 --> 00:07:18,820 saat ini dalam milidetik. Ini akan menjadi di masa 86 00:07:18,830 --> 00:07:19,850 depan, ini 87 00:07:19,850 --> 00:07:24,810 sekarang jadi perbedaannya harus menjadi angka positif karena saya memeriksa bahwa ini di masa depan 88 00:07:24,830 --> 00:07:28,280 di sini, jadi ini harus menjadi angka positif dalam milidetik. 89 00:07:28,310 --> 00:07:35,060 Jadi sekarang waktu kedaluwarsa di sini dapat diteruskan untuk mengotentikasi dan dengan itu, kita harus memiliki logout otomatis 90 00:07:35,330 --> 00:07:36,110 juga. 91 00:07:37,790 --> 00:07:39,450 Sekarang untuk memvalidasi 92 00:07:39,470 --> 00:07:46,440 bahwa ini berfungsi, mari kita pergi ke auth. File js dan benar-benar ada, dalam fungsi set timer logout, 93 00:07:46,560 --> 00:07:53,350 untuk sementara saya akan membagi waktu kedaluwarsa dengan 1000, yang berarti saya akan membagi milidetik dengan 1000 yang mengubahnya 94 00:07:53,370 --> 00:07:54,960 menjadi detik dan itu 95 00:07:54,960 --> 00:07:57,320 berarti kita harus segera logout sekarang. 96 00:07:59,410 --> 00:08:06,940 Jika saya memuat ulang, saya keluar tetapi Anda akan segera melihat bahwa secara teori hanya ada yang berfungsi. Jika saya login lagi, saya login 97 00:08:06,940 --> 00:08:12,830 dan sekarang karena saya membagi nilainya dengan 1000, saya 98 00:08:12,830 --> 00:08:21,370 harus logout setelah 3. 6 detik tapi aku tidak. Saya dapat menavigasi, tetapi jika 99 00:08:22,390 --> 00:08:30,720 saya memuat ulang, sekarang memang saya sudah keluar. Jadi itu semacam membersihkan data tetapi itu tidak menavigasi kita kembali ke layar 100 00:08:30,720 --> 00:08:31,530 auth dan 101 00:08:31,920 --> 00:08:37,710 alasan untuk itu adalah bahwa kita tidak pernah menginstruksikan React Native untuk menavigasi kita kembali ke layar auth, 102 00:08:37,740 --> 00:08:39,250 jadi itu bagian yang hilang. 103 00:08:39,270 --> 00:08:45,300 Mengosongkan toko Redux kami bagus tetapi sebagai reaksi atas izin itu, kami harus 104 00:08:45,300 --> 00:08:52,090 memastikan kami dibawa kembali ke layar auth. Untuk memastikan hal ini terjadi, kita perlu satu tempat yang selalu dirender 105 00:08:52,090 --> 00:08:59,230 yang membungkus seluruh aplikasi kita di mana kita dapat mendengarkan toko Redux dan mencari tahu kapan token kita disetel ulang ke nol sehingga jika itu 106 00:08:59,230 --> 00:09:06,480 terjadi, kita dapat menavigasi kembali ke layar auth. Sekarang akan menjadi aplikasi. File js karena itu membungkus segalanya 107 00:09:06,490 --> 00:09:08,100 tetapi masalahnya ada 108 00:09:08,110 --> 00:09:14,080 di sana saya mengatur Redux di sini. Jadi Redux di toko saya hanya tersedia di 109 00:09:14,080 --> 00:09:19,960 dalam sini, jadi dalam komponen anak bersarang dan itu sudah komponen navigator saya yang saya tidak punya 110 00:09:19,960 --> 00:09:21,000 akses langsung. 111 00:09:21,100 --> 00:09:28,700 Solusinya adalah hanya membungkus ini dengan komponen lain. Saya akan membuatnya di folder 112 00:09:29,090 --> 00:09:33,120 navigasi karena saya akan menamainya wadah navigasi. 113 00:09:33,140 --> 00:09:37,690 Sekarang ini adalah komponen Bereaksi normal, seperti ini di mana saya 114 00:09:38,820 --> 00:09:46,650 tidak memerlukan apa pun dari Bereaksi Asli tetapi di mana saya baru saja mengatur komponen wadah navigasi saya di mana saya 115 00:09:46,650 --> 00:09:52,980 menerima alat peraga dan mengembalikan beberapa jsx pada akhirnya dan mengekspor ini sebagai wadah navigasi default. 116 00:09:54,380 --> 00:10:02,810 Sekarang di sana saya ingin mengatur navigasi saya, jadi saya akan mengimpor navigator toko dari navigator toko yang ada di folder 117 00:10:02,810 --> 00:10:06,230 yang sama dan itulah yang akan saya kembalikan ke 118 00:10:06,410 --> 00:10:15,110 sini, navigator toko saya seperti ini. Sekarang saya dapat menggunakan wadah navigasi saya di sini di app. File js, jadi alih-alih mengimpor 119 00:10:15,110 --> 00:10:24,190 navigator toko di sini, saya mengimpor wadah navigasi saya dari folder navigasi dan dari file wadah 120 00:10:24,230 --> 00:10:29,980 navigasi dan menggunakan wadah navigasi di sini alih-alih navigator toko. 121 00:10:29,990 --> 00:10:34,670 Sekarang ini hanyalah pembungkus di sekitar navigator toko tetapi karena itu di dalam penyedia, saya sekarang memiliki 122 00:10:34,670 --> 00:10:36,410 akses ke Redux di sana. 123 00:10:36,440 --> 00:10:46,150 Jadi di sini, kita dapat mengimpor pemilih penggunaan dari React Redux dan menggunakannya di sini untuk memanfaatkan Redux. 124 00:10:46,190 --> 00:10:54,320 Jadi di sini di wadah navigasi, saya hanya bisa mendapatkan akses ke isAuth katakanlah dengan menggunakan selector yang menggunakan fungsi ini yang memberi saya akses ke negara Redux 125 00:10:55,010 --> 00:11:00,410 dan kemudian saya bisa mengakses negara. auth. token untuk mendapatkan akses 126 00:11:00,410 --> 00:11:06,980 ke token dalam slice state auth saya dan menggunakan operator double bang pada dasarnya memaksa ini menjadi benar atau 127 00:11:06,980 --> 00:11:12,620 salah dan jika kita tidak memiliki token, ini akan salah sehingga isAuth akan salah dalam kasus 128 00:11:12,620 --> 00:11:15,460 itu, jika kita memiliki token itu akan benar, 129 00:11:15,500 --> 00:11:23,780 jadi isAuth benar jika kita memiliki token yang masuk akal kurasa. Sekarang kita dapat menggunakan efek di sini untuk bereaksi terhadap 130 00:11:23,780 --> 00:11:25,060 perubahan itu. 131 00:11:25,160 --> 00:11:29,480 Jadi di sini dalam efek penggunaan, array dependensi saya termasuk isAuth, jadi 132 00:11:29,480 --> 00:11:37,270 ketika isAuth berubah, fungsi efek ini harus dijalankan dan oleh karena itu di sini, saya kemudian dapat memeriksa apakah kita tidak diautentikasi karena 133 00:11:37,270 --> 00:11:39,630 itu yang saya pedulikan, jika isAuth 134 00:11:39,670 --> 00:11:45,910 tidak benar , jika itu benar saya tidak peduli tetapi jika itu tidak benar, maka saya ingin menavigasi 135 00:11:45,910 --> 00:11:49,220 ke layar auth dan sekarang kami memiliki masalah lain. 136 00:11:49,390 --> 00:11:55,930 Navigator ada di sini dan hanya dalam komponen yang dirender dengan bantuan navigator, kami memiliki 137 00:11:55,930 --> 00:12:03,220 akses ke alat peraga. navigasi. menavigasi tapi untungnya, Bereaksi navigasi memberi kita jalan keluar. Kita dapat menggunakan 138 00:12:03,220 --> 00:12:08,770 referensi untuk mendapatkan akses ke fungsi navigasi dengan bantuan komponen 139 00:12:08,770 --> 00:12:17,550 ini ketika kita menggunakannya dalam kode JSX kita. Kita dapat membuat ref seperti itu dengan use ref dengan hook penggunaan dan 140 00:12:17,610 --> 00:12:20,610 kami hanya membuat ref nav kami di sini dengan 141 00:12:21,270 --> 00:12:27,070 memanggil use ref seperti ini dan Anda harus mengetahui referensi dalam Bereaksi yang pada dasarnya adalah cara 142 00:12:27,070 --> 00:12:34,890 bagi Anda untuk secara langsung mengakses elemen yang Anda render dalam jsx dan sekarang kita bisa menambahkan properti ref ke navigator toko dan 143 00:12:34,910 --> 00:12:37,450 menetapkan ini ke nav ref atau sebaliknya. 144 00:12:37,470 --> 00:12:43,020 Jadi ini membuat koneksi antara konstanta nav ref dan elemen ini yang pada akhirnya ditampilkan di sini dan 145 00:12:43,020 --> 00:12:49,610 sekarang dengan efek ini di sini, kita dapat memanggil navRef. saat ini, ini adalah bagaimana 146 00:12:49,630 --> 00:12:50,830 referensi 147 00:12:50,830 --> 00:12:59,660 bekerja, mereka memiliki pengiriman properti saat ini Pengiriman adalah metode yang disediakan oleh navigator toko atau oleh wadah aplikasi ini yang 148 00:12:59,660 --> 00:13:05,420 pada akhirnya karena wadah toko tidak lain adalah ShopNavigator. ekspor js yang merupakan komponen wadah 149 00:13:05,420 --> 00:13:11,010 aplikasi dan komponen ini memiliki metode pengiriman yang dapat kita gunakan untuk 150 00:13:11,010 --> 00:13:15,110 mengirimkan tindakan navigasi. Untuk itu, kita 151 00:13:15,110 --> 00:13:24,650 sekarang perlu mengimpor sesuatu dari React navigation dan sesuatu itu adalah objek tindakan navigasi di sini dan kemudian 152 00:13:24,650 --> 00:13:29,720 di sini, kita sebut NavigationActions. navigasi dan sekarang 153 00:13:29,900 --> 00:13:36,620 ini memungkinkan kita untuk menavigasi. Namun tidak dengan auth seperti ini tetapi ini membutuhkan 154 00:13:36,620 --> 00:13:41,950 objek sebagai argumen di mana Anda mengatur nama rute dan ini sekarang bisa menjadi auth. 155 00:13:41,960 --> 00:13:47,270 Jadi ini adalah bagaimana kita sekarang dapat menavigasi dari dalam komponen ini meskipun itu di luar navigator. 156 00:13:49,080 --> 00:13:56,610 Jadi ini masuk ke auth setiap kali status isAuth kami berubah menjadi tidak diautentikasi, ini juga berarti bahwa di navigator toko, 157 00:13:56,610 --> 00:14:03,320 di tombol logout kami, kami tidak perlu menavigasi di sini karena jika kami memicu logout, jika kami mengirim 158 00:14:03,340 --> 00:14:08,670 tindakan ini , kami menghapus token di Redux dan karenanya ini akan secara otomatis 159 00:14:08,670 --> 00:14:12,390 memicu navigasi kami berkat wadah navigasi ini dan oleh 160 00:14:12,660 --> 00:14:18,140 karena itu sekarang jika kami menyimpannya, kami harus menavigasi ke auth ketika token tidak valid. 161 00:14:18,140 --> 00:14:25,530 Jadi sekarang jika saya login lagi, setelah 3. 6 detik, kita harus keluar dan kita harus melihat bahwa 162 00:14:25,530 --> 00:14:26,800 kita sudah 163 00:14:26,850 --> 00:14:28,690 keluar, ya itu terlihat bagus. 164 00:14:28,890 --> 00:14:30,780 Mari kita coba lagi 165 00:14:36,990 --> 00:14:37,520 di 166 00:14:37,820 --> 00:14:45,490 sini, ya, kembali dan mari kita juga mencoba logout manual. Jadi jika saya masuk untuk login, buka ini, klik logout, 167 00:14:45,530 --> 00:14:47,340 ini juga masih berfungsi. 168 00:14:47,410 --> 00:14:50,900 Jadi dengan itu, kita punya fungsi logout otomatis bawaan, 169 00:14:50,950 --> 00:14:57,580 sekarang mari kita kembali ke file tindakan auth dan menghapus divisi dummy ini di sini karena saya hanya 170 00:14:57,580 --> 00:15:02,020 melakukan ini untuk pengujian, tentu saja saya tidak ingin secara manual mempersingkat 171 00:15:02,020 --> 00:15:08,980 waktu kedaluwarsa saya , alih-alih sekarang di sini kami memiliki fungsi yang berfungsi dan memastikan bahwa tidak masalah apakah 172 00:15:09,160 --> 00:15:16,210 kami mendaftar atau kami masuk atau apa pun yang kami lakukan, kami memiliki token yang kami simpan, yang dapat kami 173 00:15:16,210 --> 00:15:21,660 gunakan dan kami Kami memastikan bahwa kami juga keluar secara otomatis jika token kami kedaluwarsa. 174 00:15:21,700 --> 00:15:24,010 Ini adalah aplikasi yang sudah selesai di sini.