{"id":6251,"date":"2026-07-24T04:18:31","date_gmt":"2026-07-24T00:48:31","guid":{"rendered":"https:\/\/notes.yummybrands.studio\/?p=6251"},"modified":"2026-07-28T07:11:30","modified_gmt":"2026-07-28T03:41:30","slug":"%d8%b3%d8%a7%d8%ae%d8%aa-%d8%a7%d9%be%d9%84%db%8c%da%a9%db%8c%d8%b4%d9%86-%d8%a7%d9%86%d8%af%d8%b1%d9%88%d8%a6%db%8c%d8%af-%da%a9%d8%a7%d8%aa%d9%84%db%8c%d9%86","status":"publish","type":"post","link":"https:\/\/notes.yummybrands.studio\/?p=6251","title":{"rendered":"\u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u0626\u06cc\u062f (\u06a9\u0627\u062a\u0644\u06cc\u0646)"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1<br>\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 Jetpack Compose<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0648\u0627\u0631\u062f \u067e\u0631\u0648\u0698\u0647 \u0627\u0635\u0644\u06cc \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646 \u0628\u0634\u06cc\u0645\u060c \u0628\u0647\u062a\u0631\u0647 \u0628\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0648\u0686\u06a9 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u060c \u067e\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc Compose \u0631\u0648 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0645\u0639\u0645\u0627\u0631\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06cc\u0627 API \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0647\u062f\u0641 \u0641\u0642\u0637 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u0645 \u0686\u0637\u0648\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0648\u0627\u0642\u0639\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0633\u0627\u0632\u06cc\u0645. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0686\u0646\u062f \u06a9\u0627\u0631\u062a \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0647\u0631 \u06a9\u0627\u0631\u062a \u0634\u0627\u0645\u0644 \u0639\u06a9\u0633\u060c \u0646\u0627\u0645\u060c \u062a\u0648\u0636\u06cc\u062d \u06a9\u0648\u062a\u0627\u0647 \u0648 \u06cc\u06a9 \u062f\u06a9\u0645\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0648\u0644\u06cc\u0647 Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u060c \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0628\u0627 Compose \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u0628\u0631\u062e\u0644\u0627\u0641 \u0631\u0648\u0634 \u0642\u062f\u06cc\u0645\u06cc XML\u060c \u062f\u06cc\u06af\u0631 \u0641\u0627\u06cc\u0644 Layout \u062c\u062f\u0627 \u0646\u062f\u0627\u0631\u06cc\u0645. \u062f\u0631 Compose\u060c UI \u0641\u0642\u0637 \u06cc\u06a9 \u062a\u0627\u0628\u0639 Kotlin \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun Greeting() {\n\n    Text(\n        text = \"\u0633\u0644\u0627\u0645 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Greeting<\/span><span style=\"color: #24292E\">() {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0633\u0644\u0627\u0645 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 Composable \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645. \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0627 <code>@Composable<\/code> \u0645\u0634\u062e\u0635 \u0634\u0648\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u062e\u0634\u06cc \u0627\u0632 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u0635\u0641\u062d\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 <code>MainActivity<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class MainActivity : ComponentActivity() {\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        setContent {\n\n            ProfileScreen()\n\n        }\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">MainActivity<\/span><span style=\"color: #24292E\"> : <\/span><span style=\"color: #6F42C1\">ComponentActivity<\/span><span style=\"color: #24292E\">() {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">onCreate<\/span><span style=\"color: #24292E\">(savedInstanceState: <\/span><span style=\"color: #6F42C1\">Bundle<\/span><span style=\"color: #24292E\">?) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #005CC5\">super<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">onCreate<\/span><span style=\"color: #24292E\">(savedInstanceState)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">setContent<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>setContent<\/code> \u06cc\u0639\u0646\u06cc \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0633\u0627\u062e\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0647.<\/strong> \u0647\u0631 Composable \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0628\u0644\u0627\u06a9 \u0642\u0631\u0627\u0631 \u0628\u062f\u06cc\u0645\u060c \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647. \u0627\u06cc\u0646\u062c\u0627 \u0647\u0645 \u06af\u0641\u062a\u06cc\u0645 \u0635\u0641\u062d\u0647\u200c\u06cc \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 ProfileScreen \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Composable \u0635\u0641\u062d\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0635\u0641\u062d\u0647 \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun ProfileScreen(){\n\n    Text(\n        text = \"\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0644\u0627\u064b \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062a\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0642\u0639\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062a\u0646 \u0646\u06cc\u0633\u062a. \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0686\u0646\u062f \u0639\u0646\u0635\u0631 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0628\u0686\u06cc\u0646\u06cc\u0645. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 Layout\u0647\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Column<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0639\u0646\u0627\u0635\u0631 \u0631\u0627 \u0639\u0645\u0648\u062f\u06cc \u0632\u06cc\u0631 \u0647\u0645 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647\u06cc\u0645 \u0627\u0632 <code>Column<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Column {\n\n    Text(\n        text = \"\u0639\u0644\u06cc\"\n    )\n\n    Text(\n        text = \"\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0639\u0644\u06cc&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<br>\u0639\u0644\u06cc<br>\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Column\n\nText\n\nText\n\nText\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0632\u06cc\u0631 \u0647\u0645 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Row<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0639\u0646\u0627\u0635\u0631 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0628\u0627\u0634\u0646\u062f\u060c \u0627\u0632 <code>Row<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong> \u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u062a \u06a9\u0627\u0631\u0628\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Row {\n\n    Text(\n        text = \"\u0639\u0644\u06cc\"\n    )\n\n    Text(\n        text = \"\u062a\u0647\u0631\u0627\u0646\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Row<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0639\u0644\u06cc&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u062a\u0647\u0631\u0627\u0646&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u06cc     \u062a\u0647\u0631\u0627\u0646<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Box<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06af\u0627\u0647\u06cc \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0639\u0646\u0627\u0635\u0631 \u0631\u0648\u06cc \u0647\u0645 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u0639\u06a9\u0633 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0647 \u06cc\u06a9 \u0639\u0644\u0627\u0645\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0631\u0648\u06cc \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/strong> \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Box {\n\n    Image(\n        painter = painterResource(\n            id = R.drawable.profile\n        ),\n        contentDescription = null\n    )\n\n    Text(\n        text = \"Online\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Box<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        painter <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> R.drawable.profile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Online&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 Text \u0631\u0648\u06cc Image \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">painterResource \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0648\u0642\u062a\u06cc \u0628\u062e\u0648\u0627\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 <code>res<\/code> \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u060c<\/strong> \u0627\u0632 <code>painterResource<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc. \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647 \u0648 \u0622\u0645\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062e\u0644 Composable\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 <code>Image<\/code> \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">R.drawable.profile1 \u0627\u0632 \u06a9\u062c\u0627 \u0645\u06cc\u0627\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0631\u0641 <strong>R<\/strong> \u0645\u062e\u0641\u0641 <strong>Resources<\/strong> \u0627\u0633\u062a. \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 <code>res<\/code> \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0628\u0647 \u0646\u0627\u0645 <code>R<\/code> \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0648\u0642\u062a\u06cc \u0641\u0627\u06cc\u0644 <code>profile1.png<\/code> \u0631\u0627 \u062f\u0627\u062e\u0644 <code>res\/drawable<\/code> \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u060c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062e\u0648\u062f\u0634 \u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>R.drawable.profile1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u0647\u0631 \u062c\u0627 \u0628\u062e\u0648\u0627\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u060c \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0645\u062b\u0644 <code>.png<\/code> \u06cc\u0627 <code>.jpg<\/code> \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0686\u0648\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062e\u0648\u062f\u0634 \u0627\u0632 \u0631\u0648\u06cc \u0645\u0646\u0627\u0628\u0639 \u067e\u0631\u0648\u0698\u0647 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u200c\u062f\u0647 \u0641\u0627\u06cc\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u062f\u0648\u0645 \u062a\u0635\u0648\u06cc\u0631\u0647.<br>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0641\u0642\u0637 \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 R.drawable.profile1<br>\u0646\u0647 R.drawable.profile1.png<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0622\u06cc\u0627 contentDescription \u0627\u062c\u0628\u0627\u0631\u06cc \u0627\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647\u060c \u0627\u062c\u0628\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a. \u0627\u06af\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0641\u0642\u0637 \u062c\u0646\u0628\u0647 \u062a\u0632\u0626\u06cc\u0646\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u0642\u062f\u0627\u0631 <code>null<\/code> \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645. \u0627\u0645\u0627 \u0627\u06af\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0639\u0646\u06cc \u06cc\u0627 \u06a9\u0627\u0631\u0628\u0631\u062f \u062e\u0627\u0635\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 (\u0645\u062b\u0644\u0627\u064b \u0622\u06cc\u06a9\u0648\u0646 \u062c\u0633\u062a\u062c\u0648 \u06cc\u0627 \u0639\u06a9\u0633 \u0645\u062d\u0635\u0648\u0644)\u060c \u0628\u0647\u062a\u0631\u0647 \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0645\u0646\u0627\u0633\u0628 \u062f\u0627\u062e\u0644 <code>contentDescription<\/code> \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u0627\u0628\u06cc\u0646\u0627 \u06a9\u0647 \u0627\u0632 \u0635\u0641\u062d\u0647\u200c\u062e\u0648\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u0647\u0645 \u0645\u062a\u0648\u062c\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0628\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u06a9\u0627\u0631\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 Card<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u062a \u0648\u0627\u0642\u0639\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(){\n\n    Card {\n\n        Column {\n\n            Text(\n                text = \"\u0639\u0644\u06cc \u0627\u062d\u0645\u062f\u06cc\"\n            )\n\n            Text(\n                text = \"Android Developer\"\n            )\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0639\u0644\u06cc \u0627\u062d\u0645\u062f\u06cc&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Android Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Card<\/code> \u062e\u0648\u062f\u0634 \u06cc\u06a9 Container \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0638\u0627\u0647\u0631 \u06a9\u0627\u0631\u062a \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u0628\u0631\u0627\u06cc:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u067e\u0631\u0648\u0641\u0627\u06cc\u0644<\/li>\n\n\n\n<li>\u0645\u062d\u0635\u0648\u0644<\/li>\n\n\n\n<li>\u062e\u0628\u0631<\/li>\n\n\n\n<li>\u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u06cc\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Image<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0639\u06a9\u0633\u060c \u0627\u0648\u0644 \u0639\u06a9\u0633 \u0631\u0627 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>res\/drawable\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>profile.jpg\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Image(\n\n    painter = painterResource(\n        id = R.drawable.profile\n    ),\n\n    contentDescription = \"Profile Image\"\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    painter <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> R.drawable.profile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Profile Image&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><code>painterResource<\/code> \u0639\u06a9\u0633 \u0631\u0627 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u06a9\u0627\u0631\u062a \u06a9\u0627\u0645\u0644\u200c\u062a\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(){\n\n    Card {\n\n        Row {\n\n            Image(\n                painter = painterResource(\n                    id = R.drawable.profile\n                ),\n                contentDescription = null\n            )\n\n\n            Column {\n\n                Text(\n                    text = \"\u0639\u0644\u06cc \u0627\u062d\u0645\u062f\u06cc\"\n                )\n\n                Text(\n                    text = \"Android Developer\"\n                )\n\n                Button(\n                    onClick = {\n\n                    }\n                ){\n\n                    Text(\n                        text = \"\u0645\u0634\u0627\u0647\u062f\u0647\"\n\n                    )\n\n                }\n\n            }\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Row<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                painter <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> R.drawable.profile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0639\u0644\u06cc \u0627\u062d\u0645\u062f\u06cc&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Android Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0645\u0634\u0627\u0647\u062f\u0647&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Button \u0648 onClick<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0645\u0647 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627 \u062f\u0631 Compose \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0628\u0647 \u0646\u0627\u0645 <code>onClick<\/code> \u062f\u0627\u0631\u0646. \u0647\u0631 \u06a9\u062f\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u0636\u0631\u0628\u0647 \u0628\u0632\u0646\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647. \u0641\u0639\u0644\u0627\u064b \u0645\u0645\u06a9\u0646\u0647 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u062e\u0627\u0644\u06cc \u0628\u0627\u0634\u0647\u060c \u0627\u0645\u0627 \u0628\u0639\u062f\u0627\u064b \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0635\u0641\u062d\u0647 \u062c\u062f\u06cc\u062f\u060c \u0627\u0631\u0633\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06cc\u0627 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 \u0647\u0645\u06cc\u0646 <code>onClick<\/code> \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Spacer \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u0635\u0644\u0647 \u0628\u06cc\u0646 \u0639\u0646\u0627\u0635\u0631<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Spacer<\/code> \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 Layout\u0647\u0627\u06cc Compose \u0627\u0633\u062a \u0648 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0641\u0627\u0635\u0644\u0647 \u0628\u06cc\u0646 \u0627\u062c\u0632\u0627\u06cc \u0635\u0641\u062d\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u06cc\u0646 \u062f\u0648 \u0645\u062a\u0646 \u06cc\u0627 \u0628\u06cc\u0646 \u06cc\u06a9 \u0639\u06a9\u0633 \u0648 \u06cc\u06a9 \u062f\u06a9\u0645\u0647 \u06a9\u0645\u06cc \u0641\u0627\u0635\u0644\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0628\u0647 \u062c\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc\u060c \u0627\u0632 <code>Spacer<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0638\u0627\u0647\u0631 \u0635\u0641\u062d\u0647 \u0645\u0631\u062a\u0628\u200c\u062a\u0631 \u0648 \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Modifier \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0641\u0627\u0647\u06cc\u0645 Compose \u0647\u0645\u06cc\u0646 Modifier \u0627\u0633\u062a.<br><strong>Modifier \u06cc\u0639\u0646\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0646 \u0638\u0627\u0647\u0631 \u06cc\u0627 \u0631\u0641\u062a\u0627\u0631 \u06cc\u06a9 Composable<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0646\u062f\u0627\u0632\u0647<\/li>\n\n\n\n<li>\u0641\u0627\u0635\u0644\u0647<\/li>\n\n\n\n<li>\u0631\u0646\u06af<\/li>\n\n\n\n<li>\u06a9\u0644\u06cc\u06a9<\/li>\n\n\n\n<li>\u0634\u06a9\u0644<\/li>\n\n\n\n<li>\u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">padding<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0631\u0627\u06cc \u0641\u0627\u0635\u0644\u0647 \u062f\u0627\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n\n    text = \"Ali\",\n\n    modifier = Modifier.padding(\n        16.dp\n    )\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier.<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u062a\u0646 \u0627\u0632 \u0627\u0637\u0631\u0627\u0641 \u06f1\u06f6dp \u0641\u0627\u0635\u0644\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">fillMaxSize<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0636\u0627\u06cc \u0645\u0648\u062c\u0648\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Column(\n\n    modifier = Modifier\n        .fillMaxSize()\n\n){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">fillMaxSize<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06cc\u0639\u0646\u06cc Column \u06a9\u0644 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0628\u06af\u06cc\u0631\u062f.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">background<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Column(\n\nmodifier = Modifier\n    .background(Color.Gray)\n){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">background<\/span><span style=\"color: #24292E\">(Color.Gray)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">size<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0639\u06cc\u06cc\u0646 \u0627\u0646\u062f\u0627\u0632\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Image(\n\nmodifier = Modifier\n    .size(80.dp)\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">size<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">80<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06cc\u0639\u0646\u06cc \u0639\u06a9\u0633 \u06f8\u06f0 \u062f\u0631 \u06f8\u06f0 \u0628\u0627\u0634\u062f.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">clip<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0634\u06a9\u0644 \u06af\u0648\u0634\u0647\u200c\u0647\u0627\u060c \u0645\u062b\u0644\u0627\u064b \u0639\u06a9\u0633 \u062f\u0627\u06cc\u0631\u0647\u200c\u0627\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Image(\n\nmodifier = Modifier\n    .size(80.dp)\n    .clip(\n        CircleShape\n    )\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">size<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">80<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">clip<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        CircleShape<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0639\u06a9\u0633 \u06af\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">clickable<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u0644\u06cc\u06a9:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Card(\n\nmodifier = Modifier\n    .clickable {\n\n        println(\"Clicked\")\n\n    }\n\n){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">clickable<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">println<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;Clicked&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627 \u06a9\u0644 \u06a9\u0627\u0631\u062a \u0642\u0627\u0628\u0644 \u06a9\u0644\u06cc\u06a9 \u0627\u0633\u062a.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">weight \u0628\u0631\u0627\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0641\u0636\u0627\u06cc \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0627\u0647\u06cc \u062f\u0627\u062e\u0644 \u06cc\u06a9 <code>Row<\/code> \u06cc\u0627 <code>Column<\/code> \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0628\u062e\u0634\u060c \u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u0634\u063a\u0627\u0644 \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 <code>weight<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>modifier = Modifier.weight(1f)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 <code>Column<\/code> \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 \u0628\u0642\u06cc\u0647 \u0627\u062c\u0632\u0627 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f \u0631\u0627 \u0628\u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0645\u062e\u0635\u0648\u0635\u0627\u064b \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u06a9\u0627\u0631\u062a\u200c\u0647\u0627\u060c \u0644\u06cc\u0633\u062a\u200c\u0647\u0627 \u0648 \u0686\u06cc\u062f\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0648\u0627\u06a9\u0646\u0634\u200c\u06af\u0631\u0627 \u062e\u06cc\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af Card \u0628\u0627 containerColor<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0633\u0624\u0627\u0644 \u067e\u06cc\u0634 \u0628\u06cc\u0627\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u06a9\u0627\u0631\u062a \u0627\u0632 Modifier.background \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06a9\u0631\u062f\u06cc\u0645. \u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 <code>Card<\/code> \u062e\u0648\u062f\u0634 \u06cc\u06a9 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0622\u0645\u0627\u062f\u0647\u200c\u06cc Material \u0627\u0633\u062a \u0648 \u0631\u0646\u06af \u062f\u0627\u062e\u0644\u06cc\u0634 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 <code>colors<\/code> \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>colors = CardDefaults.cardColors(\n    containerColor = Color.White\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">colors <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> CardDefaults.<\/span><span style=\"color: #6F42C1\">cardColors<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    containerColor <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Color.White<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0632 Modifier.background \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0641\u0642\u0637 \u067e\u0634\u062a \u06a9\u0627\u0631\u062a \u0631\u0646\u06af \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0645\u0645\u06a9\u0646\u0647 \u0628\u0627 \u06af\u0648\u0634\u0647\u200c\u0647\u0627\u06cc \u06af\u0631\u062f <code>RoundedCornerShape<\/code> \u06cc\u0627 \u0638\u0627\u0647\u0631 \u062e\u0648\u062f \u06a9\u0627\u0631\u062a \u0647\u0645\u0627\u0647\u0646\u06af \u0646\u0628\u0627\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 <code>Card<\/code>\u060c Button \u0648 TextField \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0627\u062e\u0644\u06cc \u062e\u0648\u062f\u0634\u0648\u0646 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0646\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0646\u0647 \u0627\u0632 Modifier.background.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0631\u0627\u0633\u062a\u200c\u0686\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 (RTL)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0627\u0631\u0633\u06cc \u0628\u0627\u0634\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 \u0647\u0645\u0627\u0646 \u0627\u0628\u062a\u062f\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u062c\u0647\u062a \u06a9\u0644 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0631\u0627\u0633\u062a\u200c\u0628\u0647\u200c\u0686\u067e \u06a9\u0646\u06cc\u0645. \u0628\u0647\u062a\u0631\u06cc\u0646 \u0645\u062d\u0644 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u062f\u0627\u062e\u0644 <code>MainActivity<\/code> \u0648 \u0642\u0628\u0644 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0648\u0644\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>        setContent {\n\n            CompositionLocalProvider(\n                LocalLayoutDirection provides LayoutDirection.Rtl\n            ) {\n\n                ProfileScreen()\n\n            }\n        }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">setContent<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">CompositionLocalProvider<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                LocalLayoutDirection provides LayoutDirection.Rtl<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u0647\u0645\u0647\u200c\u06cc Composable\u0647\u0627\u06cc \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062b\u0644 <code>Row<\/code>\u060c <code>Column<\/code>\u060c <code>Card<\/code> \u0648 \u0633\u0627\u06cc\u0631 \u0627\u062c\u0632\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627\u0633\u062a\u200c\u0628\u0647\u200c\u0686\u067e \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0628\u0631\u0627\u06cc \u0647\u0631 \u0635\u0641\u062d\u0647 \u06cc\u0627 \u0647\u0631 \u06a9\u0627\u0631\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0646\u0638\u06cc\u0645 RTL \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0645 \u062a\u0645\u06cc\u0632\u062a\u0631 \u0627\u0633\u062a \u0648 \u0647\u0645 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u062f \u0631\u0627 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0628\u0627 \u0686\u0646\u062f \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun ProfileScreen(){\n\n    Column(\n\n        modifier = Modifier\n            .fillMaxSize()\n            .padding(16.dp)\n\n    ){\n\n        UserCard()\n\n        UserCard()\n\n        UserCard()\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">fillMaxSize<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647\u0654 \u0645\u062c\u062f\u062f \u0627\u0632 Composable\u0647\u0627<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0632\u06cc\u062a\u200c\u0647\u0627\u06cc Compose \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0647\u0631 Composable \u0645\u062b\u0644 \u06cc\u06a9 \u0642\u0637\u0639\u0647\u0654 \u0622\u0645\u0627\u062f\u0647 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u06a9 \u0628\u0627\u0631 <code>UserCard()<\/code> \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0647\u0631 \u062c\u0627 \u06a9\u0647 \u0628\u062e\u0648\u0627\u06cc\u0645\u060c \u0641\u0642\u0637 \u0628\u0627 \u0646\u0648\u0634\u062a\u0646 <code>UserCard()<\/code> \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0632 \u0647\u0645\u0648\u0646 \u06a9\u0627\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0641\u0639\u0644\u0627\u064b \u0686\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u06a9\u0627\u0631\u062a \u062b\u0627\u0628\u062a \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u060c \u0647\u0645\u0647\u200c\u06cc \u06a9\u0627\u0631\u062a\u200c\u0647\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0634\u0628\u06cc\u0647 \u0647\u0645 \u0647\u0633\u062a\u0646. \u062f\u0631 \u062f\u0631\u0633\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0647\u0631 \u06a9\u0627\u0631\u062a \u0631\u0648 \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0645\u0634\u06a9\u0644 \u0686\u06cc\u0633\u062a\u061f \u0627\u06af\u0631 \u0647\u0632\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0646\u0628\u0627\u06cc\u062f \u0647\u0645\u0647 \u0631\u0627 \u06cc\u06a9\u062c\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 LazyColumn \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">LazyColumn<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>LazyColumn<\/code> \u0645\u062b\u0644 RecyclerView \u0642\u062f\u06cc\u0645\u06cc \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>LazyColumn {\n\n    items(100){\n\n        UserCard()\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">LazyColumn<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">items<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">100<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u06cc\u0646\u062c\u0627 \u06f1\u06f0\u06f0 \u06a9\u0627\u0631\u062a \u062f\u0627\u0631\u06cc\u0645\u060c \u0648\u0644\u06cc Compose \u0641\u0642\u0637 \u0645\u0648\u0627\u0631\u062f \u0644\u0627\u0632\u0645 \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f. \u0628\u0631\u0627\u06cc \u0644\u06cc\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0647\u0645\u06cc\u0634\u0647 \u0627\u0632 LazyColumn \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0645\u062f\u0644 \u06a9\u0627\u0631\u0628\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u062c\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062b\u0627\u0628\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n    text = \"\u0639\u0644\u06cc\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0639\u0644\u06cc&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0645\u062f\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class User(\n\n    val name:String,\n\n    val job:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> job:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val users = listOf(\n\n    User(\n        \"\u0639\u0644\u06cc\",\n        \"Developer\"\n    ),\n\n    User(\n        \"\u0631\u0636\u0627\",\n        \"Designer\"\n    )\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;\u0639\u0644\u06cc&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;\u0631\u0636\u0627&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;Designer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc\u0634 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>LazyColumn {\n\n    items(users){\n\n        user ->\n\n        UserCard(\n            user\n        )\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">LazyColumn<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">items<\/span><span style=\"color: #24292E\">(users){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        user <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            user<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u06a9\u0627\u0631\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(\n    user:User\n){\n\n    Card {\n\n        Text(\n            text = user.name\n        )\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user:<\/span><span style=\"color: #6F42C1\">User<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UI \u0645\u0627 \u0627\u0632 \u062f\u0627\u062f\u0647 \u062c\u062f\u0627 \u0634\u062f\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f2<br>\u0633\u0627\u062e\u062a \u0644\u06cc\u0633\u062a \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0627\u0632 JSON<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 \u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0646\u0648\u0634\u062a\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n    text = \"Ali\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0631 \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0646\u0627\u0628\u0639 \u0645\u06cc\u200c\u0622\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0641\u0627\u06cc\u0644 JSON \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647<\/li>\n\n\n\n<li>\u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n\n\n\n<li>API \u0633\u0631\u0648\u0631<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0641\u0639\u0644\u0627\u064b \u0628\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u062d\u0627\u0644\u062a \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 JSON \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0627\u0632 \u0622\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u06cc\u0645 \u0648 \u062f\u0627\u062e\u0644 <code>LazyColumn<\/code> \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">JSON File<br>\u2193<br>Kotlin Object<br>\u2193<br>LazyColumn<br>\u2193<br>UserCard<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0641\u0627\u06cc\u0644 JSON<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0648\u0644 \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n \u2514\u2500\u2500 src\n\n      \u2514\u2500\u2500 main\n\n           \u2514\u2500\u2500 assets\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u0622\u0646 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users.json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627\u06cc \u0641\u0627\u06cc\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n  {\n    \"id\":1,\n    \"name\":\"Ali\",\n    \"job\":\"Android Developer\"\n  },\n  {\n    \"id\":2,\n    \"name\":\"Reza\",\n    \"job\":\"Designer\"\n  },\n  {\n    \"id\":3,\n    \"name\":\"Sara\",\n    \"job\":\"Product Manager\"\n  }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;job&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Android Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">2<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Reza&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;job&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Designer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">3<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Sara&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;job&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Product Manager&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 JSON \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0686\u0646\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a. \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0633\u0647 \u0648\u06cc\u0698\u06af\u06cc \u062f\u0627\u0631\u062f<br>id  name  job<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Model \u062f\u0631 Kotlin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u06a9\u0644\u0627\u0633 Kotlin \u0628\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u062f. \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0633\u0627\u0632:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User.kt\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062f\u0627\u062e\u0644 \u0622\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class User(\n\n    val id:Int,\n\n    val name:String,\n\n    val job:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> job:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0645\u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0647\u0631 \u0622\u0628\u062c\u06a9\u062a <code>User<\/code> \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a.<\/strong> \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>User(\n    id = 1,\n    name = \"Ali\",\n    job = \"Developer\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    job <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0632 Data Class \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Kotlin \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u060c <strong>\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 <code>data class<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0686\u0648\u0646 Kotlin \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0645\u0642\u0627\u06cc\u0633\u0647 \u0622\u0628\u062c\u06a9\u062a\u200c\u0647\u0627<\/strong><\/li>\n\n\n\n<li><strong>\u0646\u0645\u0627\u06cc\u0634 \u0645\u062a\u0646<\/strong><\/li>\n\n\n\n<li><strong>\u06a9\u067e\u06cc \u06a9\u0631\u062f\u0646<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val user2 = user1.copy(\n    name = \"Reza\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> user2 <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user1.<\/span><span style=\"color: #6F42C1\">copy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Reza&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062e\u0648\u0627\u0646\u062f\u0646 \u0641\u0627\u06cc\u0644 JSON<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644 JSON \u0631\u0627 \u0627\u0632 assets \u0628\u062e\u0648\u0627\u0646\u06cc\u0645. \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun loadJson(\n    context: Context\n): String {\n\n    return context.assets\n        .open(\"users.json\")\n        .bufferedReader()\n        .use {\n            it.readText()\n        }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">loadJson<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    context: <\/span><span style=\"color: #6F42C1\">Context<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">): <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> context.assets<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;users.json&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">bufferedReader<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">use<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            it.<\/span><span style=\"color: #6F42C1\">readText<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062f \u0686\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f \u0627\u0648\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>context.assets\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">\u0628\u0647 \u067e\u0648\u0634\u0647 assets \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/mark><\/strong> \u0628\u0639\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.open(\"users.json\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 JSON \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0639\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.readText()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06a9\u0644 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a String \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f. <\/strong>\u0646\u062a\u06cc\u062c\u0647 \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n {\n  \"id\":1,\n  \"name\":\"Ali\"\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062a\u0646 \u0627\u0633\u062a. \u0628\u0627\u06cc\u062f \u062a\u0628\u062f\u06cc\u0644\u0634 \u06a9\u0646\u06cc\u0645 \u0628\u0647 Object\u0647\u0627\u06cc Kotlin.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062a\u0628\u062f\u06cc\u0644 JSON \u0628\u0647 Object Kotlin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Gson \u06cc\u0627 Kotlin Serialization \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0641\u0639\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0628\u0648\u062f\u0646 \u0627\u0632 Gson \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062f\u0631 Gradle:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n    \"com.google.code.gson:gson:2.10.1\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;com.google.code.gson:gson:2.10.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val gson = Gson()\n\nval users = gson.fromJson(\n    json,\n    Array&lt;User>::class.java\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> gson <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Gson<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> gson.<\/span><span style=\"color: #6F42C1\">fromJson<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    json,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Array<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;<\/span><span style=\"color: #24292E\">::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 JSON \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0628\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Array&lt;User&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n User(\n   1,\n   \"Ali\",\n   \"Developer\"\n ),\n\n User(\n   2,\n   \"Reza\",\n   \"Designer\"\n )\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   <\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   <\/span><span style=\"color: #032F62\">&quot;Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   <\/span><span style=\"color: #005CC5\">2<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   <\/span><span style=\"color: #032F62\">&quot;Reza&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   <\/span><span style=\"color: #032F62\">&quot;Designer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Repository \u0633\u0627\u062f\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0644\u0627\u064b \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0648\u0627\u0631\u062f MVVM \u0634\u0648\u06cc\u0645\u060c \u0627\u0645\u0627 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0627\u0644\u0627\u0646 \u06a9\u062f \u0631\u0627 \u0645\u0631\u062a\u0628 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645. \u06cc\u06a9 \u0641\u0627\u06cc\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UserRepository.kt\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserRepository(\n\n    private val context: Context\n\n){\n\n    fun getUsers():List&lt;User>{\n\n        val json =\n            context.assets\n                .open(\"users.json\")\n                .bufferedReader()\n                .readText()\n\n\n        return Gson()\n            .fromJson(\n                json,\n                Array&lt;User>::class.java\n            )\n            .toList()\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> context: <\/span><span style=\"color: #6F42C1\">Context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> json <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            context.assets<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                .<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;users.json&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                .<\/span><span style=\"color: #6F42C1\">bufferedReader<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                .<\/span><span style=\"color: #6F42C1\">readText<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Gson<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">fromJson<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                json,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                Array<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;<\/span><span style=\"color: #24292E\">::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">toList<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627 UI \u0645\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u06a9\u0627\u0631\u06cc \u0628\u0647 JSON \u0646\u062f\u0627\u0631\u062f. \u0641\u0642\u0637 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>repository.getUsers()\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a LazyColumn<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserList(\n    users:List&lt;User>\n){\n\n    LazyColumn {\n\n        items(users){\n\n            user ->\n\n            UserCard(\n                user\n            )\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserList<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    users:<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">LazyColumn<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">items<\/span><span style=\"color: #24292E\">(users){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            user <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                user<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>items(users)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 User \u06cc\u06a9 \u0622\u06cc\u062a\u0645 \u0628\u0633\u0627\u0632. \u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u0627\u0648\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UserCard(Ali)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631 \u062f\u0648\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UserCard(Reza)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Card \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0646\u06a9\u0627\u062a \u0645\u0647\u0645 Compose \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647<strong> UI \u0631\u0627 \u0628\u0647 \u0642\u0637\u0639\u0627\u062a \u06a9\u0648\u0686\u06a9 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u0645. <\/strong>\u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062e\u0644 LazyColumn \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>LazyColumn {\n\n    Text()\n\n    Image()\n\n    Button()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">LazyColumn<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06cc\u06a9 Composable \u062c\u062f\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(\n    user:User\n){\n\n    Card(\n\n        modifier =\n        Modifier\n            .padding(8.dp)\n\n    ){\n\n        Column(\n\n            modifier =\n            Modifier.padding(16.dp)\n\n        ){\n\n            Text(\n                text = user.name\n            )\n\n            Text(\n                text = user.job\n            )\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user:<\/span><span style=\"color: #6F42C1\">User<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">8<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            Modifier.<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.job<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u062c\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UserCard(user)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc\u200c\u0632\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">LazyRow \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>LazyColumn<\/code> \u0628\u0631\u0627\u06cc \u0644\u06cc\u0633\u062a \u0639\u0645\u0648\u062f\u06cc \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ali\n\nReza\n\nSara\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u06af\u0627\u0647\u06cc \u0644\u06cc\u0633\u062a \u0627\u0641\u0642\u06cc \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91; \u0639\u06a9\u0633 ]&#91; \u0639\u06a9\u0633 ]&#91; \u0639\u06a9\u0633 ]&#91; \u0639\u06a9\u0633 ]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LazyRow\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>LazyRow {\n\n    items(users){\n\n        user ->\n\n        UserCard(user)\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">LazyRow<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">items<\/span><span style=\"color: #24292E\">(users){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        user <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(user)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0641\u0631\u0642 LazyColumn \u0648 LazyRow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>LazyColumn<\/strong><br>\u2193<br>\u0644\u06cc\u0633\u062a \u0639\u0645\u0648\u062f\u06cc<br><br><strong>LazyRow<\/strong><br>\u2193<br>\u0644\u06cc\u0633\u062a \u0627\u0641\u0642\u06cc<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0641\u0631\u0648\u0634\u06af\u0627\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0648\u06cc\u0698\u0647\n\n&#91; \u0645\u062d\u0635\u0648\u0644 ]&#91; \u0645\u062d\u0635\u0648\u0644 ]&#91; \u0645\u062d\u0635\u0648\u0644 ]\n\n\n\u0647\u0645\u0647 \u0645\u062d\u0635\u0648\u0644\u0627\u062a\n\n\u0645\u062d\u0635\u0648\u0644\n\n\u0645\u062d\u0635\u0648\u0644\n\n\u0645\u062d\u0635\u0648\u0644\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627\u0644\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LazyRow\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u06cc\u06cc\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LazyColumn\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0639\u06a9\u0633 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0686\u0646\u062f \u0639\u06a9\u0633 \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drawable\n\nprofile1.png\n\nprofile2.png\n\nprofile3.png\n\nprofile4.png\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Model:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class User(\n\n    val id:Int,\n\n    val name:String,\n\n    val job:String,\n\n    val image:Int\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> job:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> image:<\/span><span style=\"color: #6F42C1\">Int<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0645\u0627 \u0645\u0627 \u062f\u0631 JSON \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"image\":R.drawable.profile1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0648\u0646 JSON \u0627\u0632 Resource \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062e\u0628\u0631 \u0646\u062f\u0627\u0631\u062f.<\/strong> \u067e\u0633 \u06cc\u06a9 \u0631\u0627\u0647 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0646\u062a\u062e\u0627\u0628 \u062a\u0635\u0627\u062f\u0641\u06cc \u0639\u06a9\u0633<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0627\u0632 \u0639\u06a9\u0633\u200c\u0647\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val images = listOf(\n\n    R.drawable.profile1,\n\n    R.drawable.profile2,\n\n    R.drawable.profile3,\n\n    R.drawable.profile4\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> images <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    R.drawable.profile1,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    R.drawable.profile2,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    R.drawable.profile3,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    R.drawable.profile4<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a User:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>User(\n\n    id = json.id,\n\n    name = json.name,\n\n    job = json.job,\n\n    image =\n    images.random()\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> json.id,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> json.name,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    job <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> json.job,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    image <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    images.<\/span><span style=\"color: #6F42C1\">random<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>random()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0647\u0631 \u0628\u0627\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0639\u06a9\u0633\u200c\u0647\u0627 \u0631\u0627 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/strong> \u0645\u062b\u0644\u0627\u064b \u0628\u0627\u0631 \u0627\u0648\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ali \u2192 profile2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0631 \u062f\u0648\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ali \u2192 profile4\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc\u0634 \u0639\u06a9\u0633 \u062f\u0627\u062e\u0644 \u06a9\u0627\u0631\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UserCard:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(\n    user:User\n){\n\n    Card {\n\n        Row {\n\n            Image(\n\n                painter =\n                painterResource(\n                    user.image\n                ),\n\n                contentDescription = null,\n\n                modifier =\n                Modifier\n                    .size(70.dp)\n                    .clip(\n                        CircleShape\n                    )\n\n            )\n\n\n            Column {\n\n                Text(\n                    text = user.name\n                )\n\n\n                Text(\n                    text = user.job\n                )\n\n            }\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user:<\/span><span style=\"color: #6F42C1\">User<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Row<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    user.image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    .<\/span><span style=\"color: #6F42C1\">size<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">70<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    .<\/span><span style=\"color: #6F42C1\">clip<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                        CircleShape<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.job<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u06a9\u0627\u0631\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0639\u06a9\u0633 \u062f\u0627\u0631\u062f<\/li>\n\n\n\n<li>\u0646\u0627\u0645 \u062f\u0627\u0631\u062f<\/li>\n\n\n\n<li>\u0634\u063a\u0644 \u062f\u0627\u0631\u062f<\/li>\n\n\n\n<li>\u0638\u0627\u0647\u0631 \u0645\u0631\u062a\u0628 \u062f\u0627\u0631\u062f<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc \u067e\u0631\u0648\u0698\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc \u0634\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n \u251c\u2500\u2500 assets\n\n \u2502    \u2514\u2500\u2500 users.json\n\n \u251c\u2500\u2500 model\n\n \u2502    \u2514\u2500\u2500 User.kt\n\n \u251c\u2500\u2500 repository\n\n \u2502    \u2514\u2500\u2500 UserRepository.kt\n\n \u251c\u2500\u2500 ui\n\n \u2502    \u251c\u2500\u2500 UserCard.kt\n\n \u2502    \u2514\u2500\u2500 UserList.kt\n\n \u2514\u2500\u2500 MainActivity.kt\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u0646\u0647\u0627\u06cc\u06cc<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Context \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Context<\/code> \u067e\u0644\u06cc \u0628\u06cc\u0646 \u06a9\u062f \u0645\u0627 \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u062a. \u0647\u0631 \u0632\u0645\u0627\u0646 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u062e\u0648\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u060c \u0645\u062b\u0644 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc <code>assets<\/code>\u060c \u0645\u0646\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0646\u0645\u0627\u06cc\u0634 \u067e\u06cc\u0627\u0645\u060c \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0635\u0641\u062d\u0647 \u062c\u062f\u06cc\u062f \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u06cc\u06a9 <code>Context<\/code> \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Jetpack Compose \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 Context \u0641\u0639\u0644\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val context = LocalContext.current<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 Context \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val context = LocalContext.current<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0648\u0627\u0642\u0639 \u062f\u0627\u0631\u0647 \u0645\u06cc\u06af\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0641\u0639\u0644\u06cc \u0631\u0648 \u0628\u0647 \u0645\u0646 \u0628\u062f\u0647 \u06cc\u0627 \u062f\u0642\u06cc\u0642\u200c\u062a\u0631 Context \u0641\u0639\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u0645 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0686\u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0644\u0627\u0632\u0645\u0634 \u062f\u0627\u0631\u06cc\u0645\u061f<br>\u062f\u0627\u062e\u0644 Repository \u0645\u06cc\u200c\u062e\u0648\u0627\u062f \u0641\u0627\u06cc\u0644 <code>users.json<\/code> \u0631\u0648 \u0627\u0632 \u067e\u0648\u0634\u0647\u200c\u06cc <code>assets<\/code> \u0628\u062e\u0648\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">context.assets.open(&#8220;users.json&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LocalContext.current \u06cc\u0639\u0646\u06cc Context \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0635\u0641\u062d\u0647 \u06cc\u0627 \u0647\u0645\u06cc\u0646 Composable \u0631\u0627 \u0628\u0647 \u0645\u0646 \u0628\u062f\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u06a9\u062f\u0627\u0645 \u0641\u0627\u06cc\u0644 \u0646\u06cc\u0627\u0632 \u0628\u0647 import \u062f\u0627\u0631\u062f<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u06af\u0631 \u062f\u0648 \u0641\u0627\u06cc\u0644 \u062f\u0627\u062e\u0644 <strong>\u06cc\u06a9 \u067e\u06a9\u06cc\u062c<\/strong> \u0628\u0627\u0634\u0646\u062f \u2192 <strong>\u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 import \u0646\u06cc\u0633\u062a<\/strong><\/li>\n\n\n\n<li>\u0627\u06af\u0631 \u062f\u0627\u062e\u0644 <strong>\u062f\u0648 \u067e\u06a9\u06cc\u062c \u0645\u062a\u0641\u0627\u0648\u062a<\/strong> \u0628\u0627\u0634\u0646\u062f \u2192 <strong>\u0628\u0627\u06cc\u062f import \u0634\u0648\u0646\u062f<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>com.iman.helloiman\n\u251c\u2500\u2500 MainActivity.kt\n\u251c\u2500\u2500 ProfileScreen.kt\n\u2514\u2500\u2500 UserCard.kt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0647\u06cc\u0686\u200c\u06a9\u062f\u0627\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0645 import \u0644\u0627\u0632\u0645 \u0646\u062f\u0627\u0631\u0646\u062f. \u0627\u0645\u0627 \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>com.iman.helloiman\n\u251c\u2500\u2500 MainActivity.kt\n\nmodel\n\u2514\u2500\u2500 User.kt\n\nrepository\n\u2514\u2500\u2500 UserRepository.kt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0622\u0646 \u0648\u0642\u062a \u0647\u0631 \u062c\u0627 \u0628\u062e\u0648\u0627\u0647\u06cc \u0627\u0632 <code>User<\/code> \u06cc\u0627 <code>UserRepository<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u060c \u0628\u0627\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 import \u06a9\u0646\u06cc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">import com.iman.helloiman.model.User<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0632 remember \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u0628\u0628\u06cc\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val users = remember {\n\n    UserRepository(context)\n        .getUsers()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">(context)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 <code>remember<\/code> \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a \u0648 \u0627\u06cc\u0646\u0637\u0648\u0631\u06cc \u0645\u06cc\u200c\u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val users = UserRepository(context)\n    .getUsers()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">(context)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0634\u06a9\u0644 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647<strong> \u062f\u0631 Jetpack Compose\u060c \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0635\u0641\u062d\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0633\u0645 Recompose \u0628\u0634\u0647\u060c \u0627\u06cc\u0646 \u062e\u0637 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647.<\/strong> \u06cc\u0639\u0646\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 Repository \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0641\u0627\u06cc\u0644 users.json \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 Gson \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val users = remember {\n\n    UserRepository(context)\n        .getUsers()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">(context)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc <strong>\u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u0641\u0642\u0637 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u06a9\u0647 \u0635\u0641\u062d\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646 \u0648 \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u0634 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631.<\/strong> \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0628\u0639\u062f\u060c \u062a\u0627 \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646 Composable \u0627\u0632 \u0628\u06cc\u0646 \u0646\u0631\u0641\u062a\u0647\u060c \u0647\u0645\u0627\u0646 \u0644\u06cc\u0633\u062a \u0642\u0628\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u067e\u0633 <code>remember<\/code> \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0648\u0628\u0627\u0631\u0647\u200c\u06cc \u06a9\u062f\u0647\u0627\u06cc \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646\u06a9\u0647 Repository \u062e\u0648\u062f\u0634 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f\u060c \u0628\u0627\u0632 \u0647\u0645 Context \u0631\u0627 \u0628\u0647 \u0622\u0646 \u062f\u0627\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0628\u0627\u06cc\u062f Context \u0631\u0627 \u0628\u0647 Repository \u0628\u062f\u0647\u06cc\u0645 \u062a\u0627 Repository \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserRepository(\n    private val context: Context\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> context: <\/span><span style=\"color: #6F42C1\">Context<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 Context \u0631\u0627 \u0628\u06af\u06cc\u0631\u060c \u0686\u0648\u0646 \u0628\u0639\u062f\u0627\u064b \u0628\u0647 \u0622\u0646 \u0627\u062d\u062a\u06cc\u0627\u062c \u062f\u0627\u0631\u06cc. \u0628\u0639\u062f \u062f\u0627\u062e\u0644 Repository:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>context.assets\n    .open(\"users.json\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">context.assets<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;users.json&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644 users.json \u0631\u0627 \u0627\u0632 assets \u0647\u0645\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0632 \u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">map \u0648 items \u062f\u0648 \u06a9\u0627\u0631 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0646<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">map<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>return jsonUsers.map { jsonUser ->\n\n    User(\n        id = jsonUser.id,\n        name = jsonUser.name,\n        job = jsonUser.job,\n        image = images.random()\n    )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> jsonUsers.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> { jsonUser <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> jsonUser.id,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> jsonUser.name,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        job <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> jsonUser.job,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        image <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> images.<\/span><span style=\"color: #6F42C1\">random<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u062f\u0641 \u0645\u0627 <strong>\u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f<\/strong> \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0647\u0631 <code>JsonUser<\/code> \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0647 \u0628\u0647 \u06cc\u06a9 <code>User<\/code> \u062c\u062f\u06cc\u062f. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a <code>map<\/code> \u06cc\u06a9 <strong>\u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f<\/strong> \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">items<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>items(users) { user ->\n\n    UserCard(user)\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">items<\/span><span style=\"color: #24292E\">(users) { user <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(user)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0627\u0635\u0644\u0627\u064b \u0642\u0635\u062f \u0633\u0627\u062e\u062a\u0646 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f \u0646\u062f\u0627\u0631\u06cc\u0645. \u0644\u06cc\u0633\u062a <code>users<\/code> \u0627\u0632 \u0642\u0628\u0644 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a. \u0641\u0642\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u06a9 UI \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f3<br>\u0637\u0631\u0627\u062d\u06cc \u0638\u0627\u0647\u0631 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0648 \u062f\u0631\u0633 \u0642\u0628\u0644\u06cc \u0645\u0627 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645 \u0686\u0637\u0648\u0631 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0627\u0632 JSON \u0628\u062e\u0648\u0627\u0646\u06cc\u0645 \u0648 \u0628\u0627 <code>LazyColumn<\/code> \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647\u06cc\u0645. \u0627\u0645\u0627 \u0638\u0627\u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0646\u0648\u0632 \u0634\u0628\u06cc\u0647 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062a\u0645\u0631\u06cc\u0646\u06cc \u0627\u0633\u062a. \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0641\u0642\u0637 \u062f\u0631\u0633\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a. \u0638\u0627\u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627\u0634\u062f. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0647\u0645\u0647 \u0645\u062a\u0646\u200c\u0647\u0627 \u0641\u0648\u0646\u062a \u0645\u0646\u0627\u0633\u0628 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f<\/li>\n\n\n\n<li>\u0631\u0646\u06af\u200c\u0647\u0627 \u0627\u0632 \u06cc\u06a9 \u062c\u0627\u06cc \u0645\u0634\u062e\u0635 \u06a9\u0646\u062a\u0631\u0644 \u0634\u0648\u0646\u062f<\/li>\n\n\n\n<li>\u062f\u06a9\u0645\u0647\u200c\u0647\u0627 \u0638\u0627\u0647\u0631 \u06cc\u06a9\u0633\u0627\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f<\/li>\n\n\n\n<li>\u06a9\u0627\u0631\u062a\u200c\u0647\u0627 \u0647\u0645\u0647 \u06cc\u06a9 \u0637\u0631\u0627\u062d\u06cc \u0645\u0634\u062e\u0635 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc UI \u0645\u0627 \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Theme\n\n \u251c\u2500\u2500 Colors\n\n \u251c\u2500\u2500 Typography\n\n \u2514\u2500\u2500 Components\n\n       \u251c\u2500\u2500 AppText\n\n       \u251c\u2500\u2500 AppButton\n\n       \u2514\u2500\u2500 UserCard\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0648\u0646\u062a \u0641\u0627\u0631\u0633\u06cc \u0628\u0647 \u067e\u0631\u0648\u0698\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644 \u0628\u0627\u06cc\u062f \u0641\u0648\u0646\u062a\u200c\u0647\u0627\u06cc \u0641\u0627\u0631\u0633\u06cc \u0631\u0627 \u0648\u0627\u0631\u062f \u067e\u0631\u0648\u0698\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0627\u062e\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>res\n\n \u2514\u2500\u2500 font\n\n      \u251c\u2500\u2500 iransans_bold.ttf\n\n      \u2514\u2500\u2500 iransans_light.ttf\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a FontFamily<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 Compose \u0628\u06af\u0648\u06cc\u06cc\u0645 \u0627\u06cc\u0646 \u0641\u0648\u0646\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0634\u0646\u0627\u0633\u062f.<\/strong> \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0633\u0627\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Type.kt\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val IranSans = FontFamily(\n\n    Font(\n        R.font.iransans_light,\n        FontWeight.Light\n    ),\n\n    Font(\n        R.font.iransans_bold,\n        FontWeight.Bold\n    )\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> IranSans <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">FontFamily<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Font<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        R.font.iransans_light,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        FontWeight.Light<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Font<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        R.font.iransans_bold,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        FontWeight.Bold<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u06cc\u06a9 \u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0641\u0648\u0646\u062a \u0633\u0627\u062e\u062a\u06cc\u0645. \u06cc\u0639\u0646\u06cc \u062d\u0627\u0644\u0627 Compose \u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u06a9\u0647 \u0648\u0642\u062a\u06cc \u0648\u0632\u0646 Light \u062e\u0648\u0627\u0633\u062a\u06cc FontWeight.Light \u0627\u0632 \u0641\u0627\u06cc\u0644 iransans_light.ttf \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Typography \u0627\u062e\u062a\u0635\u0627\u0635\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0631 \u062c\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fontSize = 18.sp\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fontWeight = FontWeight.Bold\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0647\u0645\u0647 \u0631\u0627 \u06cc\u06a9\u062c\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. <\/strong>\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val AppTypography = Typography(\n\n    titleLarge = TextStyle(\n\n        fontFamily = IranSans,\n\n        fontWeight = FontWeight.Bold,\n\n        fontSize = 22.sp\n\n    ),\n\n\n    bodyMedium = TextStyle(\n\n        fontFamily = IranSans,\n\n        fontWeight = FontWeight.Light,\n\n        fontSize = 16.sp\n\n    )\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> AppTypography <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Typography<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    titleLarge <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">TextStyle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        fontFamily <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> IranSans,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        fontWeight <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> FontWeight.Bold,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        fontSize <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">22<\/span><span style=\"color: #24292E\">.sp<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    bodyMedium <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">TextStyle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        fontFamily <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> IranSans,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        fontWeight <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> FontWeight.Light,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        fontSize <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.sp<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0648 \u0645\u062f\u0644 \u0645\u062a\u0646 \u062f\u0627\u0631\u06cc\u0645\u060c \u0639\u0646\u0648\u0627\u0646\u200c\u0647\u0627 titleLarge \u0645\u062a\u0646\u200c\u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc bodyMedium \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0641\u0648\u0646\u062a \u06cc\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc\u0645\u060c \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Theme \u0627\u062e\u062a\u0635\u0627\u0635\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631 Compose \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0631\u0646\u06af\u200c\u0647\u0627 \u0648 \u0641\u0648\u0646\u062a\u200c\u0647\u0627 \u062f\u0627\u062e\u0644 Theme \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f.<\/strong> \u06cc\u06a9 \u0641\u0627\u06cc\u0644 Theme.kt \u0628\u0633\u0627\u0632 \u0648 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u062f\u0627\u062e\u0644 \u0622\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun MyAppTheme(\n    content: @Composable () -> Unit\n){\n    MaterialTheme(\n        typography = AppTypography,\n        content = content\n    )\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">MyAppTheme<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    content: <\/span><span style=\"color: #6F42C1\">@Composable<\/span><span style=\"color: #24292E\"> () <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> Unit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">MaterialTheme<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        typography <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> AppTypography,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        content <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> content<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0631 <code>MainActivity<\/code>&nbsp;\u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>setContent {\n    ProfileScreen()\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">setContent<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0631\u06cc\u0645. \u062a\u0628\u062f\u06cc\u0644\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>setContent {\n    MyAppTheme {\n        ProfileScreen()\n    }\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">setContent<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">MyAppTheme<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0628\u0639\u062f \u062a\u0645\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0627\u062e\u0644 Theme \u0645\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0646\u06af\u200c\u0647\u0627 \u0647\u0645 \u0646\u0628\u0627\u06cc\u062f \u067e\u0631\u0627\u06a9\u0646\u062f\u0647 \u0628\u0627\u0634\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n\ncolor = Color.Red\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">color <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Color.Red<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0628\u0639\u062f\u0627\u064b \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc \u0631\u0646\u06af \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0639\u0648\u0636 \u06a9\u0646\u06cc \u0628\u0627\u06cc\u062f \u062f\u0647\u200c\u0647\u0627 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc. \u0628\u0647\u062a\u0631 \u0627\u0633\u062a Color.kt \u0628\u0633\u0627\u0632\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val PrimaryColor =  Color(0xFF2563EB)\n\nval BackgroundColor =  Color(0xFFF5F5F5)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> PrimaryColor <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">  <\/span><span style=\"color: #6F42C1\">Color<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">0xFF2563EB<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> BackgroundColor <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">  <\/span><span style=\"color: #6F42C1\">Color<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">0xFFF5F5F5<\/span><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Card(\ncolors = CardDefaults.cardColors(\n    containerColor =  BackgroundColor\n)\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">colors <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> CardDefaults.<\/span><span style=\"color: #6F42C1\">cardColors<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    containerColor <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">  BackgroundColor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Component \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0642\u062f\u0631\u062a\u200c\u0647\u0627\u06cc Compose \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0646\u0628\u0627\u06cc\u062f \u0647\u0631 \u0628\u0627\u0631 \u06cc\u06a9 Text \u0631\u0627 \u0627\u0632 \u0635\u0641\u0631 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0647\u0645\u0647 \u0639\u0646\u0648\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0641\u0648\u0646\u062a Bold \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f<\/li>\n\n\n\n<li>\u0627\u0646\u062f\u0627\u0632\u0647 \u06f2\u06f0 \u0628\u0627\u0634\u0646\u062f<\/li>\n\n\n\n<li>\u0631\u0646\u06af \u0645\u0634\u062e\u0635 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 Component \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a AppText<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AppText.kt<\/code><\/pre>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun AppText(\n    text:String\n){\n\n    Text(\n\n        text = text,\n        style = MaterialTheme.typography.bodyMedium\n\n    )\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppText<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> text,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        style <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> MaterialTheme.typography.bodyMedium<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0647 \u062c\u0627\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n    text = \"Ali\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AppText(\n    \"Ali\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">AppText<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0632\u06cc\u062a \u0686\u06cc\u0633\u062a\u061f \u0627\u06af\u0631 \u0641\u0631\u062f\u0627 \u0641\u0648\u0646\u062a \u06cc\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u0645\u062a\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a AppButton<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc Button \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u0641\u0627\u06cc\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AppButton.kt<\/code><\/pre>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun AppButton(\n\n    text:String,\n    onClick:()->Unit\n\n){\n    Button(\n        onClick = onClick\n    ){\n        Text(\n            text = text\n        )\n    }\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppButton<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick:()<\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\">Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> onClick<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0631 \u06a9\u0644 \u067e\u0631\u0648\u0698\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AppButton(\n    text = \"\u0645\u0634\u0627\u0647\u062f\u0647\",\n    onClick = {\n    }\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">AppButton<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0645\u0634\u0627\u0647\u062f\u0647&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u06a9\u0631\u062f\u0646 UserCard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06a9\u0627\u0631\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n    text = user.name\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0634\u062a\u06cc\u0645. \u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AppText(\n    text = user.name\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">AppText<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u06a9\u0627\u0645\u0644\u200c\u062a\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(\n\n    user:User\n\n){\n\n    Card(\n        modifier =\n        Modifier\n            .padding(8.dp)\n    ){\n\n        Row(\n\n            modifier =\n            Modifier\n                .padding(16.dp)\n\n        ){\n\n            Image(\n\n                painter =\n                painterResource(\n                    user.image\n                ),\n\n                contentDescription = null,\n\n                modifier =\n                Modifier\n                    .size(70.dp)\n                    .clip(\n                        CircleShape\n                    )\n            )\n\n\n            Column(\n\n                modifier =\n                Modifier\n                    .padding(\n                        start = 16.dp\n                    )\n\n            ){\n\n                AppText(\n                    user.name\n                )\n\n\n                AppText(\n                    user.job\n                )\n\n\n                AppButton(\n                    text = \"\u0645\u0634\u0627\u0647\u062f\u0647\",\n                    onClick = {\n\n                    }\n                )\n\n            }\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user:<\/span><span style=\"color: #6F42C1\">User<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">8<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Row<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                .<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    user.image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    .<\/span><span style=\"color: #6F42C1\">size<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">70<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    .<\/span><span style=\"color: #6F42C1\">clip<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                        CircleShape<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    .<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                        start <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">AppText<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    user.name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">AppText<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    user.job<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">AppButton<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0645\u0634\u0627\u0647\u062f\u0647&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UserCard \u062e\u0648\u062f\u0634 \u0627\u0632 Component\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Component \u0628\u0631\u0627\u06cc Avatar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0639\u06a9\u0633 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0647\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0645\u0647 \u062c\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u062c\u062f\u0627 \u0634\u0648\u062f.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun Avatar(\n\n    image:Int\n\n){\n\n    Image(\n\n        painter =\n        painterResource(image),\n\n        contentDescription = null,\n\n        modifier =\n        Modifier\n            .size(70.dp)\n            .clip(\n                CircleShape\n            )\n    )\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Avatar<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    image:<\/span><span style=\"color: #6F42C1\">Int<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Image<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(image),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">size<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">70<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">clip<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                CircleShape<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Avatar(\n    user.image\n)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 Component \u0633\u0627\u0632\u06cc \u0645\u0647\u0645 \u0627\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0642\u0639\u06cc \u06f3\u06f0 \u0635\u0641\u062d\u0647 \u062f\u0627\u0631\u06cc. \u0627\u06af\u0631 \u062f\u0631 \u0647\u0631 \u0635\u0641\u062d\u0647 Button \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u060c \u0628\u0639\u062f\u0627\u064b \u062a\u063a\u06cc\u06cc\u0631 \u0638\u0627\u0647\u0631 \u0633\u062e\u062a \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0645\u0627<strong> \u0627\u06af\u0631 AppButton \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u060c \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 AppButton.kt \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/strong> \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0642\u0627\u0628\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0631\u0633<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u0645\u0631\u062a\u0628\u200c\u062a\u0631 \u0634\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ui\n\n \u251c\u2500\u2500 components\n\n \u2502     \u251c\u2500\u2500 AppText.kt\n\n \u2502     \u251c\u2500\u2500 AppButton.kt\n\n \u2502     \u251c\u2500\u2500 Avatar.kt\n\n \u2502     \u2514\u2500\u2500 UserCard.kt\n\n\ntheme\n\n \u251c\u2500\u2500 Color.kt\n\n \u251c\u2500\u2500 Type.kt\n\n \u2514\u2500\u2500 Theme.kt\n\n\nmodel\n\n \u2514\u2500\u2500 User.kt\n\n\nrepository\n\n \u2514\u2500\u2500 UserRepository.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0641\u0631\u0645\u062a \u0645\u0646\u0627\u0633\u0628 \u0641\u0648\u0646\u062a \u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u0648\u0646\u062a TTF \u0648 OTF \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/strong> \u0648 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 <code>res\/font<\/code> \u0642\u0631\u0627\u0631 \u0628\u062f\u0647\u06cc\u0645.<strong> \u0627\u0645\u0627 \u0641\u0631\u0645\u062a\u200c\u0647\u0627\u06cc WOFF \u0648 WOFF2 \u0645\u062e\u0635\u0648\u0635 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0648\u0628 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a\u0646\u062f.<\/strong> \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0641\u0648\u0646\u062a\u06cc \u0631\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u06cc \u0648 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0646 \u0631\u0627 \u062f\u06cc\u062f\u06cc\u060c \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0647\u0645\u06cc\u0634\u0647 \u0646\u0633\u062e\u0647 TTF \u06cc\u0627 OTF \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0641\u0627\u06cc\u0644 Type.kt \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 Type.kt \u0645\u062d\u0644 \u062a\u0639\u0631\u06cc\u0641 \u0641\u0648\u0646\u062a\u200c\u0647\u0627 \u0648 \u0627\u0633\u062a\u0627\u06cc\u0644 \u0645\u062a\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u0627\u0648\u0644 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 FontFamily\u060c \u0641\u0648\u0646\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 res\/font \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u0645 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u062f\u0644\u062e\u0648\u0627\u0647\u060c \u0645\u062b\u0644 IranSans\u060c \u0628\u0647 Compose \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0639\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Typography\u060c \u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u062a\u0646 \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645\u061b \u0645\u062b\u0644\u0627\u064b titleLarge \u0628\u0631\u0627\u06cc \u0639\u0646\u0648\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af\u060c titleMedium \u0628\u0631\u0627\u06cc \u062a\u06cc\u062a\u0631\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631 \u0648 bodyMedium \u0628\u0631\u0627\u06cc \u0645\u062a\u0646\u200c\u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc. \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u0647\u0631 \u062c\u0627 \u0628\u0647 \u06cc\u06a9 \u0639\u0646\u0648\u0627\u0646 \u06cc\u0627 \u0645\u062a\u0646 \u0645\u0639\u0645\u0648\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06af\u0631 \u0628\u0639\u062f\u0647\u0627 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0641\u0648\u0646\u062a\u060c \u0627\u0646\u062f\u0627\u0632\u0647 \u06cc\u0627 \u0648\u0632\u0646 \u0645\u062a\u0646\u200c\u0647\u0627 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc\u0645\u060c \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0639\u0646\u06cc <\/strong><strong>Unit<\/strong><strong> <\/strong><strong>\u062f\u0631 \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u06cc\u0645<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">content: @Composable () -&gt; Unit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 content \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062a\u0627\u0628\u0639 Composable \u0628\u0627\u0634\u0647 \u06a9\u0647 <strong>\u0647\u06cc\u0686 \u0648\u0631\u0648\u062f\u06cc\u200c\u0627\u06cc \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0647<\/strong> \u0648 <strong>\u0647\u06cc\u0686 \u0645\u0642\u062f\u0627\u0631 \u062e\u0627\u0635\u06cc \u0647\u0645 \u0628\u0631\u0646\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647<\/strong>. \u0639\u0644\u0627\u0645\u062a () \u06cc\u0639\u0646\u06cc \u0648\u0631\u0648\u062f\u06cc \u0646\u062f\u0627\u0631\u0647 \u0648 Unit \u06cc\u0639\u0646\u06cc \u062e\u0631\u0648\u062c\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0646\u062f\u0627\u0631\u0647. \u067e\u0633 \u0627\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062f\u0631 \u0627\u0635\u0644 \u06cc\u06a9 \u062a\u06a9\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc\u0647 \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b \u062f\u0627\u062e\u0644 Theme \u0627\u062c\u0631\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\n\nfun MyAppTheme(\n\n\u00a0\u00a0\u00a0 content: @Composable () -> Unit\n\n) {\n\n\u00a0\u00a0\u00a0 MaterialTheme(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 typography = AppTypography,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 content = content\n\n\u00a0\u00a0\u00a0 )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">MyAppTheme<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 content: <\/span><span style=\"color: #6F42C1\">@Composable<\/span><span style=\"color: #24292E\"> () <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">MaterialTheme<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 typography <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> AppTypography,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 content <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> content<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0645\u0648\u0642\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u0627\u06cc\u0646 \u0628\u062e\u0634:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">MyAppTheme {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&nbsp;&nbsp;&nbsp; ProfileScreen()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0648\u0646 \u062a\u0627\u0628\u0639\u06cc \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u062f\u0627\u062e\u0644 content \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0628\u0631\u0627\u06cc \u062f\u06a9\u0645\u0647 \u0647\u0645 \u0647\u0645\u06cc\u0646 \u0645\u0646\u0637\u0642 \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\n\nfun AppButton(\n\n\u00a0\u00a0\u00a0 text: String,\n\n\u00a0\u00a0\u00a0 onClick: () -> Unit\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppButton<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 text: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 onClick: () <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 onClick \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u06a9\u0647 \u0648\u0631\u0648\u062f\u06cc \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u061b \u0645\u062b\u0644\u0627\u064b \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0635\u0641\u062d\u0647\u060c \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u06cc\u0627 \u0646\u0645\u0627\u06cc\u0634 \u067e\u06cc\u0627\u0645. \u0686\u0648\u0646 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u06cc \u0645\u062b\u0644 \u0639\u062f\u062f \u06cc\u0627 \u0645\u062a\u0646 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647\u060c \u062e\u0631\u0648\u062c\u06cc\u200c\u0627\u0634 Unit \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AppButton(\n\n\u00a0\u00a0\u00a0 text = \"\u0645\u0634\u0627\u0647\u062f\u0647\",\n\n\u00a0\u00a0\u00a0 onClick = {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 println(\"Button clicked\")\n\n\u00a0\u00a0\u00a0 }\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">AppButton<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0645\u0634\u0627\u0647\u062f\u0647&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">println<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;Button clicked&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u060c Unit \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0645\u0639\u0627\u062f\u0644 void \u062f\u0631 \u0628\u0639\u0636\u06cc \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0647 \u0627\u0633\u062a\u061b \u06cc\u0639\u0646\u06cc \u062a\u0627\u0628\u0639 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647\u060c \u0648\u0644\u06cc \u0686\u06cc\u0632\u06cc \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0646\u062a\u06cc\u062c\u0647 \u062a\u062d\u0648\u06cc\u0644 \u0645\u0627 \u0646\u0645\u06cc\u200c\u062f\u0647. \u062d\u062a\u0645\u0627\u064b. \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u0644\u062d\u0646 \u0631\u0648 \u0645\u062d\u0627\u0648\u0631\u0647\u200c\u0627\u06cc\u060c \u0631\u0648\u0627\u0646 \u0648 \u0634\u0628\u06cc\u0647 \u062c\u0632\u0648\u0647 \u0634\u062e\u0635\u06cc \u062e\u0648\u062f\u062a \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">MyAppTheme \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 MyAppTheme \u06cc\u06a9 \u062a\u06a9\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc (Composable) \u0631\u0627 \u0627\u0632 \u0645\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0627\u062e\u0644 MaterialTheme \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 AppTypography \u0631\u0627 \u0628\u0647 MaterialTheme \u0645\u0639\u0631\u0641\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u061b \u06cc\u0639\u0646\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u0647\u0631 Composable \u06a9\u0647 \u062f\u0627\u062e\u0644 MyAppTheme \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0647\u0645\u06cc\u0646 \u062a\u0627\u06cc\u067e\u0648\u06af\u0631\u0627\u0641\u06cc\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u0647\u0631 \u062c\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">MaterialTheme.typography.bodyMedium<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u0641\u0648\u0646\u062a\u060c \u0627\u0646\u062f\u0627\u0632\u0647 \u0648 \u0648\u0632\u0646 \u0645\u062a\u0646 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u0645\u061b \u0686\u0648\u0646 \u0647\u0645\u0647 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0632 \u0642\u0628\u0644 \u062f\u0627\u062e\u0644 AppTypography \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0648 \u062e\u0648\u062f MaterialTheme \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0644 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u06af\u0631 \u0628\u0639\u062f\u0647\u0627 \u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0638\u0627\u0647\u0631 \u0645\u062a\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc\u0645\u060c \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645\u060c \u0646\u0647 \u062a\u06a9\u200c\u062a\u06a9 \u0635\u0641\u062d\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0631\u0646\u06af\u200c\u0647\u0627 \u0631\u0627 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Jetpack Compose \u0631\u0646\u06af\u200c\u0647\u0627 \u0631\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Color(0xFF2563EB)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0627\u06cc\u062f \u0627\u0648\u0644\u0634 \u0639\u062c\u06cc\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u06a9\u062f \u0631\u0646\u06af Hex \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0641\u062a\u0648\u0634\u0627\u067e \u06cc\u0627 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0631\u0646\u06af:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">#2563EB<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Compose \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">0xFF2563EB<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0641\u0627\u0648\u062a\u0634 \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0648\u0644 \u06a9\u062f \u0631\u0646\u06af\u060c \u062f\u0648 \u0631\u0642\u0645 \u062f\u06cc\u06af\u0631 \u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u062f\u0648 \u0631\u0642\u0645 \u0645\u06cc\u0632\u0627\u0646 \u0634\u0641\u0627\u0641\u06cc\u062a (Opacity) \u0631\u0646\u06af \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0645\u0642\u062f\u0627\u0631 FF \u06cc\u0639\u0646\u06cc \u0631\u0646\u06af \u06a9\u0627\u0645\u0644\u0627\u064b \u062f\u06cc\u062f\u0647 \u0634\u0648\u062f \u0648 \u0647\u06cc\u0686 \u0634\u0641\u0627\u0641\u06cc\u062a\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u06a9\u0645\u062a\u0631 \u06a9\u0646\u06cc\u0645\u060c \u0631\u0646\u06af \u0647\u0645 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0646\u0633\u0628\u062a \u0634\u0641\u0627\u0641\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Color(0x802563EB)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 80 \u06cc\u0639\u0646\u06cc \u0631\u0646\u06af \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06f5\u06f0 \u062f\u0631\u0635\u062f \u0634\u0641\u0627\u0641 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631 \u062f\u0631 \u0628\u06cc\u0634\u062a\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u06cc\u060c \u0631\u0646\u06af\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 FF \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061b \u0686\u0648\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0646\u06af\u200c\u0647\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0648\u0627\u0636\u062d \u0648 \u0628\u062f\u0648\u0646 \u0634\u0641\u0627\u0641\u06cc\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u0646\u062f. \u0627\u06af\u0631 \u0628\u0639\u062f\u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u0631\u0646\u06af \u0646\u06cc\u0645\u0647\u200c\u0634\u0641\u0627\u0641 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a \u0647\u0645\u06cc\u0646 \u062f\u0648 \u0631\u0642\u0645 \u0627\u0648\u0644 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc\u0645 \u0648 \u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062e\u0648\u062f \u0631\u0646\u06af \u0631\u0627 \u0639\u0648\u0636 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0648\u0644 \u06a9\u062f \u0631\u0646\u06af 0x \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0648\u0642\u062a\u06cc \u0628\u062e\u0648\u0627\u06cc\u0645 \u06cc\u06a9 \u0639\u062f\u062f \u0631\u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0647\u06af\u0632 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0627\u0648\u0644\u0634 <code>0x<\/code> \u0628\u0630\u0627\u0631\u06cc\u0645. \u0627\u06cc\u0646 <code>0x<\/code> \u0628\u0647 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u06cc\u200c\u06af\u0647 \u0639\u062f\u062f\u06cc \u06a9\u0647 \u0628\u0639\u062f\u0634 \u0645\u06cc\u0627\u062f\u060c \u0645\u0639\u0645\u0648\u0644\u06cc \u0648 \u062f\u0647\u200c\u062f\u0647\u06cc \u0646\u06cc\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a <strong>Hexadecimal<\/strong> \u062e\u0648\u0646\u062f\u0647 \u0628\u0634\u0647. <code>0x<\/code> \u062e\u0648\u062f\u0634 \u062c\u0632\u0648 \u0631\u0646\u06af \u0646\u06cc\u0633\u062a\u061b \u0641\u0642\u0637 \u0639\u0644\u0627\u0645\u062a\u06cc\u0647 \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u06cc\u200c\u06af\u0647 \u0639\u062f\u062f \u0628\u0639\u062f\u06cc \u0631\u0648 \u0628\u0647 \u0641\u0631\u0645\u062a \u0647\u06af\u0632 \u062a\u0641\u0633\u06cc\u0631 \u06a9\u0646\u0647. \u062d\u062a\u0645\u0627\u064b. \u0627\u06cc\u0646 \u0645\u062a\u0646 \u0628\u0647 \u0633\u0628\u06a9 \u062c\u0632\u0648\u0647 \u062e\u0648\u062f\u062a \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">maxLines \u0648 overflow \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0627\u0647\u06cc \u0645\u0645\u06a9\u0646\u0647 \u0645\u062a\u0646 \u0627\u0632 \u0641\u0636\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0627\u0634 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647\u200c\u0627\u06cc\u0645 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u0628\u0627\u0634\u0647. \u0628\u0627 maxLines \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0645\u062a\u0646 \u062d\u062f\u0627\u06a9\u062b\u0631 \u062f\u0631 \u0686\u0646\u062f \u062e\u0637 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">maxLines = 1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u062a\u0646 \u0641\u0642\u0637 \u062f\u0631 \u06cc\u06a9 \u062e\u0637 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f. \u0627\u06af\u0631 \u0645\u062a\u0646 \u0637\u0648\u0644\u0627\u0646\u06cc\u200c\u062a\u0631 \u0628\u0627\u0634\u062f\u060c \u062e\u0635\u0648\u0635\u06cc\u062a overflow \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0628\u0627 \u0627\u062f\u0627\u0645\u0647\u200c\u06cc \u0645\u062a\u0646 \u0686\u0647 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">overflow = TextOverflow.Ellipsis<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u0645\u062a\u0646 \u062c\u0627 \u0646\u0634\u062f\u060c \u0627\u0646\u062a\u0647\u0627\u06cc \u0622\u0646 \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646\u060c \u0628\u0627 \u0633\u0647 \u0646\u0642\u0637\u0647 (&#8230;) \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0638\u0627\u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0631\u062a\u0628 \u0628\u0645\u0627\u0646\u062f \u0648 \u0645\u062a\u0646\u200c\u0647\u0627\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc\u060c \u0686\u06cc\u062f\u0645\u0627\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0647\u0645 \u0646\u0631\u06cc\u0632\u0646\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0639\u06a9\u0633 \u0631\u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Int \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0647\u0631 \u0641\u0627\u06cc\u0644 \u062f\u0627\u062e\u0644 <code>drawable<\/code> \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u0639\u062f\u062f\u06cc \u062f\u0627\u0631\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631 \u0622\u062f\u0631\u0633 \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>R.drawable.profile1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0635\u0644 \u0627\u0632 \u0646\u0648\u0639 <code>Int<\/code> \u0647\u0633\u062a\u0646. \u067e\u0633 \u062f\u0627\u062e\u0644 <code>Avatar<\/code> \u0639\u06a9\u0633 \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: Int<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0631\u0648 \u0628\u0647 <code>painterResource<\/code> \u0645\u06cc\u200c\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>painterResource(\n\u00a0\u00a0\u00a0 id = image\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">painterResource \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0645\u06cc\u0646 ID \u0645\u06cc\u200c\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0648\u0627\u0642\u0639\u06cc \u0639\u06a9\u0633 \u0631\u0648 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u062f\u0627\u062e\u0644 Image \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u06cc\u0639\u0646\u06cc \u0645\u0627 \u062e\u0648\u062f \u0641\u0627\u06cc\u0644 \u0639\u06a9\u0633 \u0631\u0648 \u0646\u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u06cc\u0645\u061b \u0641\u0642\u0637 \u0634\u0646\u0627\u0633\u0647\u200c\u0634 \u0631\u0648 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> R.drawable.profile1 \u06cc\u06a9 \u0639\u06a9\u0633 \u0646\u06cc\u0633\u062a\u061b \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u0639\u062f\u062f\u06cc (Resource ID) \u0627\u0633\u062a \u06a9\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0647 \u0622\u0646 \u0639\u06a9\u0633 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u062f\u0627\u062e\u0644 items \u0627\u0632 key \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc <code>LazyColumn<\/code> \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u062f \u0644\u06cc\u0633\u062a \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0647\u0631 \u0622\u06cc\u062a\u0645 \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u0645\u0646\u062d\u0635\u0631\u0628\u0647\u200c\u0641\u0631\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>key = { user ->\n    user.id\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">key <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> { user <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user.id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br>\u06cc\u0639\u0646\u06cc \u0634\u0646\u0627\u0633\u0647 \u0647\u0631 \u06a9\u0627\u0631\u062a\u060c <code>id<\/code> \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u062a\u0631\u062a\u06cc\u0628 \u0644\u06cc\u0633\u062a \u0639\u0648\u0636 \u0634\u062f\u060c \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062d\u0630\u0641 \u06cc\u0627 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u0634 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u060c Compose \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u0647\u062f \u0647\u0631 \u0622\u06cc\u062a\u0645 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u062f\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a \u0648 \u0641\u0642\u0637 \u0647\u0645\u0627\u0646 \u0642\u0633\u0645\u062a \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0647\u0645 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0647\u0645 \u0627\u0632 \u0628\u0647\u200c\u0647\u0645\u200c\u0631\u06cc\u062e\u062a\u06af\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0644\u06cc\u0633\u062a \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a sp \u0648 dp \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u0646\u062f\u0627\u0632\u0647\u200c\u0647\u0627 \u0627\u0632 \u062f\u0648 \u0648\u0627\u062d\u062f \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. <code>dp<\/code> \u0628\u0631\u0627\u06cc \u0627\u0646\u062f\u0627\u0632\u0647 \u0627\u062c\u0632\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0645\u062b\u0644 \u062f\u06a9\u0645\u0647\u060c \u0641\u0627\u0635\u0644\u0647\u060c \u0639\u06a9\u0633 \u0648 \u06a9\u0627\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0645\u0627 <code>sp<\/code> \u0645\u062e\u0635\u0648\u0635 \u0627\u0646\u062f\u0627\u0632\u0647 \u0645\u062a\u0646 \u0627\u0633\u062a. \u062a\u0641\u0627\u0648\u062a \u0645\u0647\u0645\u0634\u0627\u0646 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <code>sp<\/code> \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0648\u0646\u062a \u06af\u0648\u0634\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0647\u0645 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u062e\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u06af\u0648\u0634\u06cc\u060c \u0627\u0646\u062f\u0627\u0632\u0647 \u0646\u0648\u0634\u062a\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u06cc\u0627 \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631 \u06a9\u0646\u062f\u060c \u0645\u062a\u0646\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 <code>sp<\/code> \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0647\u0645 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0622\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0631\u0627\u06cc <strong>\u0641\u0648\u0646\u062a\u200c\u0647\u0627 \u0627\u0632 <\/strong><code><strong>sp<\/strong><\/code> \u0648 \u0628\u0631\u0627\u06cc <strong>\u0628\u0642\u06cc\u0647 \u0627\u062c\u0632\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0632 <\/strong><code><strong>dp<\/strong><\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f4<br>\u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc \u0648 Asset\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 JSON \u0645\u06cc\u200c\u0622\u06cc\u062f\u060c \u06a9\u0627\u0631\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u0631\u06cc\u0645\u060c \u0641\u0648\u0646\u062a \u0641\u0627\u0631\u0633\u06cc \u062f\u0627\u0631\u06cc\u0645 \u0648 Component\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645. \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u06cc\u06a9 \u0686\u06cc\u0632 \u06a9\u0645 \u062f\u0627\u0631\u06cc\u0645. \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0639\u0645\u0648\u0644 \u062f\u0631 \u0627\u06a9\u062b\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc<\/li>\n\n\n\n<li>\u0622\u06cc\u06a9\u0646\u200c\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc<\/li>\n\n\n\n<li>\u0644\u0648\u06af\u0648\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n\n\n\n<li>\u0635\u0641\u062d\u0647 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0634\u0628\u06cc\u0647<strong> \u06cc\u06a9 \u062f\u0627\u0634\u0628\u0648\u0631\u062f<\/strong> \u0648\u0627\u0642\u0639\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Asset \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0641\u0627\u06cc\u0644 \u062b\u0627\u0628\u062a \u0628\u0627\u0634\u062f \u0648 \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u062f\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b Asset \u06cc\u0627 Resource \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0639\u06a9\u0633\u200c\u0647\u0627<\/li>\n\n\n\n<li>\u0641\u0648\u0646\u062a\u200c\u0647\u0627<\/li>\n\n\n\n<li>\u0622\u06cc\u06a9\u0646\u200c\u0647\u0627<\/li>\n\n\n\n<li>SVG<\/li>\n\n\n\n<li>\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc JSON<\/li>\n\n\n\n<li>\u0644\u0648\u06af\u0648<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 res \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f. \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>res\n\n \u251c\u2500\u2500 drawable\n\n \u251c\u2500\u2500 font\n\n \u251c\u2500\u2500 mipmap\n\n \u2514\u2500\u2500 values\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 SVG \u0628\u0647 \u067e\u0631\u0648\u0698\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0628\u0631\u0627\u06cc \u0645\u0646\u0648\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 \u0622\u06cc\u06a9\u0646 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>menu.svg\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631 Compose \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 SVG \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0627\u0645\u0627 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0641\u0627\u06cc\u0644 SVG \u062e\u0627\u0645 \u0631\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f. \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 Vector Drawable \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u0645.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Vector Asset<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Android Studio:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>res \u2193 drawable \u2193 New \u2193 Vector Asset<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0641\u0627\u06cc\u0644 SVG \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u0646\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b ic_menu. \u0628\u0639\u062f Android Studio \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ic_menu.xml\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 res\/drawable \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Icon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0631 Compose:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Icon(\n\n    painter =\n    painterResource(\n        R.drawable.ic_menu\n    ),\n    contentDescription = null\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Icon<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        R.drawable.ic_menu<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>painterResource()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 Vector \u0631\u0627 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Component \u0628\u0631\u0627\u06cc Icon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc Text \u0648 Button \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u06cc\u0645\u060c \u0628\u0631\u0627\u06cc Icon \u0647\u0645 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun AppIcon(\n\n    icon:Int,\n    onClick:()->Unit\n\n){\n\n    Icon(\n\n        painter =\n        painterResource(icon),\n\n        contentDescription = null,\n\n        modifier =\n        Modifier\n            .clickable {\n                onClick()\n            }\n    )\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppIcon<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    icon:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick:()<\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\">Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Icon<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(icon),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">clickable<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">onClick<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u062c\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AppIcon(\n    icon = R.drawable.ic_menu,\n    onClick = {\n    }\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">AppIcon<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    icon <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> R.drawable.ic_menu,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Dashboard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dashboard\n\n \u251c\u2500\u2500 TopBar\n\n \u251c\u2500\u2500 UserList\n\n \u2514\u2500\u2500 Drawer\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0644\u0627\u064b \u0641\u0642\u0637 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun DashboardScreen(){\n\n    Column {\n\n        Text(\n            text = \"Dashboard\"\n        )\n        UserList()\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">DashboardScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Dashboard&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserList<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Hamburger Menu \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 \u0622\u06cc\u06a9\u0646 \u0633\u0647 \u062e\u0637\u06cc \u0645\u0639\u0631\u0648\u0641 \u2630 \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627\u0644\u0627\u06cc \u0635\u0641\u062d\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u067e\u0646\u0644 \u0627\u0632 \u06a9\u0646\u0627\u0631 \u0635\u0641\u062d\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f.\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>----------------\n| Profile      |\n| Users        |\n| Settings     |\n| Logout       |\n----------------\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">ModalNavigationDrawer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631 Compose \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06cc\u06a9 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0622\u0645\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ModalNavigationDrawer\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0622\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ModalNavigationDrawer(\n\n    drawerContent = {\n\n    }\n\n){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">ModalNavigationDrawer<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    drawerContent <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0648 \u0642\u0633\u0645\u062a \u062f\u0627\u0631\u062f\u060c \u0642\u0633\u0645\u062a \u0627\u0648\u0644 drawerContent \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u067e\u0646\u0644 \u06a9\u0646\u0627\u0631\u06cc \u0627\u0633\u062a \u0648 \u0642\u0633\u0645\u062a \u062f\u0648\u0645 \u0628\u062f\u0646\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Drawer \u0633\u0627\u062f\u0647<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun DashboardScreen(){\n\n    ModalNavigationDrawer(\n\n        drawerContent = {\n\n            Column {\n\n                Text(\n                    text = \"Profile\"\n                )\n\n                Text(\n                    text = \"Settings\"\n                )\n\n                Text(\n                    text = \"Logout\"\n                )\n\n            }\n\n        }\n\n    ){\n        UserList()\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">DashboardScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">ModalNavigationDrawer<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        drawerContent <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Profile&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Settings&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Logout&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">UserList<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0627\u0646 Drawer \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647. \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u062f\u06a9\u0645\u0647 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646\u0634 \u0631\u0627 \u0646\u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u06a9\u0646\u062a\u0631\u0644 \u0628\u0627\u0632 \u0648 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 Drawer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 Drawer \u0627\u0632 DrawerState \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong> \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val drawerState =\n    rememberDrawerState(\n            initialValue = DrawerValue.Closed\n    )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> drawerState <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">rememberDrawerState<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            initialValue <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> DrawerValue.Closed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062f\u0631\u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 Drawer \u0628\u0633\u062a\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Coroutine<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0628\u0627\u0632 \u0648 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 Drawer \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a suspend \u0627\u0633\u062a.<\/strong> \u067e\u0633:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val scope =  rememberCoroutineScope()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> scope <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">  <\/span><span style=\"color: #6F42C1\">rememberCoroutineScope<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627\u060c \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>scope.launch {\n    drawerState.open()\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">scope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    drawerState.<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0633\u062a\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>scope.launch {\n\n    drawerState.close()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">scope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    drawerState.<\/span><span style=\"color: #6F42C1\">close<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a TopBar \u0628\u0627 Hamburger<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06cc\u06a9 Header \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Row(\n\nmodifier =\nModifier\n.fillMaxWidth()\n.padding(16.dp)\n\n){\n\n    Icon(\n\n        painter =\n        painterResource(\n            R.drawable.ic_menu\n        ),\n\n        contentDescription = null,\n\n        modifier =\n        Modifier.clickable {\n\n            scope.launch {\n\n                drawerState.open()\n\n            }\n\n        }\n\n    )\n\n\n    Text(\n        text = \"Users\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Row<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">fillMaxWidth<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Icon<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            R.drawable.ic_menu<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        ),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Modifier.<\/span><span style=\"color: #6F42C1\">clickable<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            scope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                drawerState.<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Users&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0648\u0642\u062a\u06cc \u0631\u0648\u06cc \u0622\u06cc\u06a9\u0646 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0645\u060c Drawer \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0645\u0646\u0648<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 Text \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Text(\n    \"Profile\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;Profile&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 Component \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun DrawerItem(\n\n    title:String,\n\n    icon:Int,\n\n    onClick:()->Unit\n\n){\n\n    Row(\n\n        modifier =\n        Modifier\n            .fillMaxWidth()\n            .clickable {\n\n                onClick()\n\n            }\n            .padding(16.dp)\n\n    ){\n\n        Icon(\n\n            painter =\n            painterResource(icon),\n\n            contentDescription = null\n\n        )\n\n\n        Text(\n            text = title\n        )\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">DrawerItem<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    title:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    icon:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick:()<\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\">Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Row<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">fillMaxWidth<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">clickable<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">onClick<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .<\/span><span style=\"color: #6F42C1\">padding<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">16<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Icon<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            painter <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">painterResource<\/span><span style=\"color: #24292E\">(icon),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>DrawerItem(\n\n    title = \"Settings\",\n\n    icon = R.drawable.ic_settings,\n\n    onClick = {\n\n    }\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">DrawerItem<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    title <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Settings&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    icon <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> R.drawable.ic_settings,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Drawer \u062d\u0631\u0641\u0647\u200c\u0627\u06cc\u200c\u062a\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ModalNavigationDrawer(\n\ndrawerContent = {\n\n\nColumn {\n\n\nDrawerItem(\n\n\"Profile\",\n\nR.drawable.ic_profile\n\n){\n\n\n}\n\n\nDrawerItem(\n\n\"Settings\",\n\nR.drawable.ic_settings\n\n){\n\n\n}\n\n\nDrawerItem(\n\n\"Logout\",\n\nR.drawable.ic_logout\n\n){\n\n\n}\n\n\n\n}\n\n\n}\n\n){\n\nDashboardContent()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">ModalNavigationDrawer<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">drawerContent <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">DrawerItem<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Profile&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">R.drawable.ic_profile<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">DrawerItem<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Settings&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">R.drawable.ic_settings<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">DrawerItem<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Logout&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">R.drawable.ic_logout<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">DashboardContent<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ModalNavigationDrawer\n\n \u251c\u2500\u2500 Drawer\n\n \u2502     \u251c\u2500\u2500 Profile\n\n \u2502     \u251c\u2500\u2500 Settings\n\n \u2502     \u2514\u2500\u2500 Logout\n\n\n \u2514\u2500\u2500 Content\n\n       \u2514\u2500\u2500 Users\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Splash Screen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u0645\u0627\u0645 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0634\u0631\u0648\u0639 \u062f\u0627\u0631\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u0644\u0648\u06af\u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/strong> \u0686\u0646\u062f \u0644\u062d\u0638\u0647 \u0628\u0639\u062f \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645. \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u060c Splash Screen API \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0644\u0648\u06af\u0648<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0644\u0648\u06af\u0648 \u0631\u0627 \u062f\u0627\u062e\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>drawable\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app_logo.png\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 Splash Screen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Gradle:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n    \"androidx.core:core-splashscreen:1.0.1\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;androidx.core:core-splashscreen:1.0.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 Activity<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MainActivity<\/code><\/pre>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>override fun onCreate(\n    savedInstanceState:Bundle?\n){\n\n    val splash =  installSplashScreen()\n\n\n    super.onCreate(\n        savedInstanceState\n    )\n\n\n    setContent {\n\n        MyAppTheme {\n\n            DashboardScreen()\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">onCreate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    savedInstanceState:<\/span><span style=\"color: #6F42C1\">Bundle<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> splash <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">  <\/span><span style=\"color: #6F42C1\">installSplashScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #005CC5\">super<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">onCreate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        savedInstanceState<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">setContent<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">MyAppTheme<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">DashboardScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0646\u0638\u06cc\u0645 \u0638\u0627\u0647\u0631 Splash<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0627\u062e\u0644 Theme:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;style name=\"Theme.App.Starting\">\n\n    &lt;item name=\"windowSplashScreenAnimatedIcon\">\n        @drawable\/app_logo\n    &lt;\/item>\n\n&lt;\/style>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">style name<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #032F62\">&quot;Theme.App.Starting&quot;<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">item name<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #032F62\">&quot;windowSplashScreenAnimatedIcon&quot;<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">@drawable<\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\">app_logo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">&lt;\/<\/span><span style=\"color: #24292E\">item<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">&lt;\/<\/span><span style=\"color: #24292E\">style<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0644\u0648\u06af\u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u062d\u0627\u0644\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0634\u0628\u06cc\u0647 \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u0634\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App\n\n \u251c\u2500\u2500 Theme\n\n \u251c\u2500\u2500 Components\n\n \u251c\u2500\u2500 Dashboard\n\n \u251c\u2500\u2500 Drawer\n\n \u251c\u2500\u2500 Assets\n\n \u2514\u2500\u2500 UserList\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u0641\u0627\u06cc\u0644 themes.xml \u0628\u0647 \u0686\u0647 \u062f\u0631\u062f \u0645\u06cc\u200c\u062e\u0648\u0631\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u0644\u0627\u0646 \u0647\u0631 \u0686\u06cc Theme \u062f\u0627\u0634\u062a\u06cc\u0645 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 Theme.kt \u0628\u0648\u062f \u0648 \u0641\u06a9\u0631 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0627\u0631 \u062a\u0645\u0648\u0645\u0647. \u0648\u0644\u06cc \u06cc\u0647 \u0646\u06a9\u062a\u0647 \u0647\u0633\u062a. \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0635\u0644\u0627\u064b \u06a9\u062f\u0647\u0627\u06cc Kotlin \u0627\u062c\u0631\u0627 \u0628\u0634\u0646\u060c \u062e\u0648\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0686\u0647 \u0638\u0627\u0647\u0631\u06cc \u0634\u0631\u0648\u0639 \u0628\u0634\u0647. \u0645\u062b\u0644\u0627\u064b \u0645\u0648\u0642\u0639 Splash Screen \u0647\u0646\u0648\u0632 Theme.kt \u0627\u0635\u0644\u0627\u064b \u0627\u062c\u0631\u0627 \u0646\u0634\u062f\u0647. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0641\u0627\u06cc\u0644 <strong>themes.xml<\/strong> \u0648\u0627\u0631\u062f \u06a9\u0627\u0631 \u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0638\u0627\u0647\u0631\u06cc \u062e\u0648\u062f \u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u0647\u061b \u06cc\u0639\u0646\u06cc \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f\u0647\u0627\u06cc Compose \u0645\u0634\u062e\u0635 \u0628\u0627\u0634\u0646. \u062e\u0644\u0627\u0635\u0647 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u06cc \u0638\u0627\u0647\u0631 \u062e\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627 \u0631\u0648 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u060c \u0645\u06cc\u0631\u06cc \u0633\u0631\u0627\u063a <code>Theme.kt<\/code>\u060c \u0648\u0644\u06cc \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u06cc \u062e\u0648\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u0648\u0642\u0639 \u0631\u0648\u0634\u0646 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 Splash Screen \u06cc\u0647 \u0638\u0627\u0647\u0631\u06cc \u0646\u0634\u0648\u0646 \u0628\u062f\u0647\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 <code>themes.xml<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0627\u06cc\u0646 Style \u062c\u062f\u06cc\u062f \u0686\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b \u0641\u0642\u0637 \u06cc\u06a9 Theme \u062f\u0627\u0634\u062a\u06cc\u0645 \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f. \u0648\u0644\u06cc \u062d\u0627\u0644\u0627 \u06cc\u0647 Style \u062c\u062f\u06cc\u062f \u0628\u0647 \u0627\u0633\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Theme.HelloIman.Starting<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">Theme.HelloIman.Starting<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u06cc\u0645. \u0627\u06cc\u0646 Style \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f \u0644\u062d\u0638\u0647 \u0627\u0648\u0644 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0648\u0644 \u0627\u06cc\u0646 Theme \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0644\u0648\u06af\u0648 \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u062f\u0647\u060c \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0633\u0641\u06cc\u062f \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u062f\u0647 \u0648 \u0628\u0639\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u060c \u062e\u0648\u062f\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u0631\u0647 \u0631\u0648\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Theme.HelloIman<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">Theme.HelloIman<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0647 \u0647\u0645\u0648\u0646 Theme \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0645\u0648\u0646\u0647. \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 Style \u0641\u0642\u0637 \u0645\u0633\u0626\u0648\u0644 \u0635\u0641\u062d\u0647 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a \u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u0648\u0646 \u062f\u06cc\u06af\u0647 \u0647\u06cc\u0686 \u0646\u0642\u0634\u06cc \u0646\u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">postSplashScreenTheme \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 Splash Screen \u062a\u0645\u0648\u0645 \u0634\u062f\u060c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0686\u0647 Theme\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0647. \u062f\u0642\u06cc\u0642\u0627\u064b \u06a9\u0627\u0631 postSplashScreenTheme \u0647\u0645\u06cc\u0646\u0647\u061b \u0628\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u06cc\u06af\u0647 \u0628\u0639\u062f \u0627\u0632 \u0635\u0641\u062d\u0647 \u0634\u0631\u0648\u0639\u060c \u0627\u0632 \u0627\u06cc\u0646 Theme \u0628\u0631\u0627\u06cc \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646. \u062a\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u0645\u0648\u0646 \u0647\u0645 \u0627\u0648\u0644 Theme.HelloIman.Starting \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 Splash Screen \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0647 \u0645\u062d\u0636 \u0627\u06cc\u0646\u06a9\u0647 Splash \u062a\u0645\u0648\u0645 \u0634\u062f\u060c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062e\u0648\u062f\u0634 \u0628\u0647 Theme.HelloIman \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0647 \u0648 \u0628\u0642\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0647\u0645\u0648\u0646 Theme \u0627\u0635\u0644\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u062d\u062a\u0645\u0627\u064b. \u0627\u06cc\u0646\u0645 \u0628\u0627 \u0647\u0645\u0648\u0646 \u0633\u0628\u06a9\u06cc \u06a9\u0647 \u06af\u0641\u062a\u06cc\u060c \u0645\u062d\u0627\u0648\u0631\u0647\u200c\u0627\u06cc\u060c \u0634\u06cc\u0631\u0641\u0647\u0645 \u0648 \u0645\u0646\u0627\u0633\u0628 \u062c\u0632\u0648\u0647:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">SystemClock \u0648 uptimeMillis \u0628\u0647 \u0686\u0647 \u062f\u0631\u062f \u0645\u06cc\u200c\u062e\u0648\u0631\u0646\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0641\u0647\u0645\u06cc\u0645 Splash Screen \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0645\u0648\u0646\u062f\u0647\u060c \u0628\u0627\u06cc\u062f \u06cc\u0647 \u062c\u0627\u06cc\u06cc \u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0632 SystemClock \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0633\u0627\u0639\u062a \u062f\u0627\u062e\u0644\u06cc \u062e\u0648\u062f \u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u0647 \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0632\u0645\u0627\u0646 \u0633\u067e\u0631\u06cc\u200c\u0634\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634\u0646 \u0634\u062f\u0646 \u06af\u0648\u0634\u06cc \u0631\u0648 \u0628\u0647 \u0645\u0627 \u0628\u062f\u0647. \u062a\u0627\u0628\u0639:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>SystemClock.uptimeMillis()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">SystemClock.<\/span><span style=\"color: #6F42C1\">uptimeMillis<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u06cc\u0646 \u0639\u062f\u062f \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647\u061b \u06cc\u0639\u0646\u06cc \u062a\u0639\u062f\u0627\u062f \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0632\u0645\u0627\u0646 \u0631\u0648\u0634\u0646 \u0634\u062f\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u06af\u0630\u0634\u062a\u0647. \u0645\u0627 \u0647\u0645 \u0645\u0648\u0642\u0639 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc\u0646 \u0639\u062f\u062f \u0631\u0648 \u062f\u0627\u062e\u0644 startTime \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 <\/strong><strong>uptimeMillis<\/strong><strong> <\/strong><strong>\u0631\u0648 \u0635\u062f\u0627 \u0632\u062f\u06cc\u0645\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0645\u062f\u0627\u0645 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0627\u0632 \u0627\u0648\u0646 \u06af\u0630\u0634\u062a\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 SystemClock.uptimeMillis \u0631\u0648 \u0635\u062f\u0627 \u0645\u06cc\u200c\u0632\u0646\u06cc\u0645 \u0648 \u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0631\u0648 \u0628\u0627 startTime \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>SystemClock.uptimeMillis() - startTime &lt; 3000<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">SystemClock.<\/span><span style=\"color: #6F42C1\">uptimeMillis<\/span><span style=\"color: #24292E\">() <\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\"> startTime <\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">3000<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u062e\u062a\u0644\u0627\u0641\u0634 \u06a9\u0645\u062a\u0631 \u0627\u0632 3000 \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 (\u06f3 \u062b\u0627\u0646\u06cc\u0647) \u0628\u0627\u0634\u0647\u060c \u06cc\u0639\u0646\u06cc \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f Splash Screen \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0628\u0645\u0648\u0646\u0647. \u0648\u0644\u06cc \u0628\u0647 \u0645\u062d\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0627\u062e\u062a\u0644\u0627\u0641 \u0628\u0647 \u06f3 \u062b\u0627\u0646\u06cc\u0647 \u06cc\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631\u0633\u0647\u060c \u0634\u0631\u0637 false \u0645\u06cc\u0634\u0647 \u0648 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f Splash Screen \u0631\u0648 \u0645\u06cc\u200c\u0628\u0646\u062f\u0647 \u0648 \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u0634\u0647. \u06cc\u0639\u0646\u06cc \u062a\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u0645\u0648\u0646\u060c \u0627\u06cc\u0646 \u0686\u0646\u062f \u062e\u0637 \u06a9\u062f \u0641\u0642\u0637 \u06cc\u06a9 \u062a\u0627\u06cc\u0645\u0631 \u06f3 \u062b\u0627\u0646\u06cc\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 \u0634\u0631\u0648\u0639 \u0633\u0627\u062e\u062a\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>rememberDrawerState <\/strong><strong>\u0628\u0647 \u0686\u0647 \u062f\u0631\u062f \u0645\u06cc\u200c\u062e\u0648\u0631\u0647\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc \u0641\u0642\u0637 \u062f\u0648 \u062d\u0627\u0644\u062a \u062f\u0627\u0631\u0647\u061b \u06cc\u0627 <strong>\u0628\u0627\u0632\u0647<\/strong> \u06cc\u0627 <strong>\u0628\u0633\u062a\u0647<\/strong>. rememberDrawerState \u062f\u0642\u06cc\u0642\u0627\u064b \u0648\u0638\u06cc\u0641\u0647 \u062f\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0648\u0636\u0639\u06cc\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u0646\u06af\u0647 \u062f\u0627\u0631\u0647. \u0645\u0627 \u0647\u0645 \u0627\u0648\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc\u0646\u062c\u0648\u0631\u06cc \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>rememberDrawerState(\n\u00a0\u00a0\u00a0 initialValue = DrawerValue.Closed\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">rememberDrawerState<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 initialValue <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> DrawerValue.Closed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647\u060c \u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc \u0627\u0632 \u0647\u0645\u0648\u0646 \u0627\u0648\u0644 <strong>\u0628\u0633\u062a\u0647<\/strong> \u0628\u0627\u0634\u0647. \u0628\u0639\u062f \u0647\u0631 \u0648\u0642\u062a \u0644\u0627\u0632\u0645 \u0634\u062f\u060c \u0647\u0645\u06cc\u0646 State \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0645\u0646\u0648 \u0628\u0627\u0632 \u06cc\u0627 \u0628\u0633\u062a\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 remember \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0645\u06cc\u200c\u0633\u0627\u062e\u062a\u06cc\u0645\u060c <strong>\u0628\u0627 \u0647\u0631 \u0628\u0627\u0631 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0635\u0641\u062d\u0647<\/strong> \u0645\u0642\u062f\u0627\u0631\u0634 \u0627\u0632 \u0627\u0648\u0644 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u062f. \u0648\u0644\u06cc remember \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631 \u062a\u0627 \u0648\u0642\u062a\u06cc \u0647\u0645\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0631\u0648\u06cc \u0646\u0645\u0627\u06cc\u0634\u06af\u0631\u0647 \u062d\u0641\u0638 \u0628\u0634\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631 \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0632 \u06cc\u0627 \u0628\u0633\u062a\u0647 \u0628\u0648\u062f\u0646 Drawer \u0627\u0632 \u0628\u06cc\u0646 \u0646\u0645\u06cc\u0631\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Coroutine \u06cc\u0639\u0646\u06cc \u0686\u06cc\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0645\u0647 <strong>Coroutine<\/strong> \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u06a9\u0627\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u062f\u0648\u0646 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647. \u062a\u0648\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0639\u0636\u06cc \u06a9\u0627\u0631\u0647\u0627 \u0645\u062b\u0644:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0627\u0632 \u0634\u062f\u0646 Drawer<\/li>\n\n\n\n<li>\u0627\u0646\u06cc\u0645\u06cc\u0634\u0646\u200c\u0647\u0627<\/li>\n\n\n\n<li>\u062f\u0627\u0646\u0644\u0648\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/li>\n\n\n\n<li>\u062e\u0648\u0627\u0646\u062f\u0646 \u0641\u0627\u06cc\u0644<\/li>\n\n\n\n<li>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u0631<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0632\u0645\u0627\u0646\u200c\u0628\u0631 \u0647\u0633\u062a\u0646. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0647\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0631\u0648\u06cc Thread \u0627\u0635\u0644\u06cc \u0627\u062c\u0631\u0627 \u0628\u0634\u0646\u060c \u0645\u0645\u06a9\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0686\u0646\u062f \u0644\u062d\u0638\u0647 \u06af\u06cc\u0631 \u06a9\u0646\u0647. Coroutine \u0627\u0648\u0645\u062f\u0647 \u062a\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0647\u0627 \u0631\u0648 <strong>\u0628\u062f\u0648\u0646 \u0642\u0641\u0644 \u06a9\u0631\u062f\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>rememberCoroutineScope <\/strong><strong>\u0628\u0647 \u0686\u0647 \u062f\u0631\u062f \u0645\u06cc\u200c\u062e\u0648\u0631\u0647\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f \u0639\u0645\u0644 \u0628\u0627\u0632 \u0634\u062f\u0646 Drawer \u06cc\u06a9 \u06a9\u0627\u0631 \u0632\u0645\u0627\u0646\u200c\u0628\u0631 (Suspend Function) \u0645\u062d\u0633\u0648\u0628 \u0645\u06cc\u0634\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">drawerState.open()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 \u06cc\u06a9 Coroutine \u0627\u062c\u0631\u0627 \u0628\u0634\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0648\u0644 \u06cc\u06a9 Scope \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val scope = rememberCoroutineScope()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0647\u0631 \u0648\u0642\u062a \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u0645\u0646\u0648 \u06a9\u0644\u06cc\u06a9 \u0634\u062f \u06af\u0641\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>scope.launch {\n\u00a0\u00a0\u00a0 drawerState.open()\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">scope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 drawerState.<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u00ab\u06cc\u06a9 Coroutine \u062c\u062f\u06cc\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646 \u0648 \u062f\u0627\u062e\u0644\u0634 Drawer \u0631\u0648 \u0628\u0627\u0632 \u06a9\u0646.\u00bb \u062f\u0631 \u0648\u0627\u0642\u0639 Scope \u0645\u062d\u06cc\u0637\u06cc\u0647 \u06a9\u0647 Coroutine \u062f\u0627\u062e\u0644 \u0627\u0648\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 open \u062f\u0627\u062e\u0644 launch \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 open \u06cc\u06a9 Suspend Function \u0647\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 Coroutine \u0627\u062c\u0627\u0632\u0647 \u0627\u062c\u0631\u0627 \u062f\u0627\u0631\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646 \u063a\u0644\u0637\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">drawerState.open()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0644\u06cc \u0627\u06cc\u0646 \u062f\u0631\u0633\u062a\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>scope.launch {\n\u00a0\u00a0\u00a0 drawerState.open()\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">scope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 drawerState.<\/span><span style=\"color: #6F42C1\">open<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">ModalNavigationDrawer \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">ModalNavigationDrawer \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 Material Design \u0647\u0633\u062a. \u0647\u0631 \u0648\u0642\u062a \u0628\u062e\u0648\u0627\u06cc \u0645\u0646\u0648\u06cc \u06a9\u0634\u0648\u06cc\u06cc \u06a9\u0646\u0627\u0631 \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc. \u0627\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u062e\u0648\u062f\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0627\u0632 \u0634\u062f\u0646<\/li>\n\n\n\n<li>\u0628\u0633\u062a\u0647 \u0634\u062f\u0646<\/li>\n\n\n\n<li>\u0627\u0646\u06cc\u0645\u06cc\u0634\u0646<\/li>\n\n\n\n<li>\u06a9\u0634\u06cc\u062f\u0646 \u0628\u0627 \u0627\u0646\u06af\u0634\u062a<\/li>\n\n\n\n<li>\u062a\u0627\u0631 \u0634\u062f\u0646 \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u0634\u062a \u0645\u0646\u0648<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0641\u0642\u0637 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062f\u0627\u062e\u0644 Drawer \u0686\u06cc \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u06cc\u0646\u062c\u0648\u0631\u06cc \u0646\u0648\u0634\u062a\u06cc\u0645\u061f<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ModalNavigationDrawer(\ndrawerState = drawerState,\n\n\u00a0\u00a0\u00a0 drawerContent = {\n\n\u00a0\u00a0\u00a0 }\n\n) {\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">ModalNavigationDrawer<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">drawerState <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> drawerState,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 drawerContent <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0633\u0645\u0634 <strong>Named Arguments<\/strong> \u0647\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0631\u0648 \u0641\u0642\u0637 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0627\u0633\u0645 \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0648 \u0647\u0645 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">drawerState = drawerState<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 drawerState \u0627\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u060c \u0627\u0632 \u0645\u062a\u063a\u06cc\u0631 drawerState \u062e\u0648\u062f\u0645\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647. \u0627\u06cc\u0646 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u06a9\u062f \u062e\u06cc\u0644\u06cc \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0628\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">drawerContent \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">drawerContent \u06cc\u06a9 \u0642\u0633\u0645\u062a \u062e\u0627\u0644\u06cc\u0647 \u06a9\u0647 \u062e\u0648\u062f\u0645\u0648\u0646 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062f\u0627\u062e\u0644 \u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u067e\u0631\u0648\u0641\u0627\u06cc\u0644<\/li>\n\n\n\n<li>\u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/li>\n\n\n\n<li>\u062e\u0631\u0648\u062c<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u062f\u0627\u062e\u0644 \u0647\u0645\u06cc\u0646 \u0628\u062e\u0634 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">ModalDrawerSheet \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f ModalNavigationDrawer \u0641\u0642\u0637 \u0645\u0633\u0626\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0632 \u0648 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 Drawer \u0647\u0633\u062a. \u0627\u0645\u0627 \u0638\u0627\u0647\u0631 \u062e\u0648\u062f \u0645\u0646\u0648 \u0631\u0627 ModalDrawerSheet \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0631\u0646\u06af \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647<\/li>\n\n\n\n<li>\u0634\u06a9\u0644 \u0645\u0646\u0648<\/li>\n\n\n\n<li>\u0641\u0636\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc<\/li>\n\n\n\n<li>\u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0645\u0646\u0648<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u062f\u0627\u062e\u0644 ModalDrawerSheet \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646. \u0628\u0647 \u0632\u0628\u0627\u0646 \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ModalNavigationDrawer<\/strong> = \u0645\u062f\u06cc\u0631 \u06a9\u0644 Drawer<br><strong>ModalDrawerSheet<\/strong> = \u062e\u0648\u062f \u067e\u0646\u0644 \u0633\u0641\u06cc\u062f \u0645\u0646\u0648\u06cc \u06a9\u0646\u0627\u0631\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u0628\u06cc\u0646\u0647<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">statusBarsPadding \u0628\u0647 \u0686\u0647 \u062f\u0631\u062f \u0645\u06cc\u200c\u062e\u0648\u0631\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Modifier \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0627\u0631\u062a\u0641\u0627\u0639 \u0646\u0648\u0627\u0631 \u0628\u0627\u0644\u0627\u06cc \u06af\u0648\u0634\u06cc (Status Bar) \u0628\u0647 \u0628\u0627\u0644\u0627\u06cc \u0635\u0641\u062d\u0647 \u0641\u0627\u0635\u0644\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u062a\u0627 \u0645\u062d\u062a\u0648\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0632\u06cc\u0631 \u0633\u0627\u0639\u062a\u060c \u0628\u0627\u062a\u0631\u06cc \u0648 \u0622\u0646\u062a\u0646 \u0642\u0631\u0627\u0631 \u0646\u06af\u06cc\u0631\u0647. \u062a\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u0645\u0648\u0646 \u0647\u0645 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 statusBarsPadding\u060c \u0622\u06cc\u06a9\u0646 \u0645\u0646\u0648\u06cc \u0647\u0645\u0628\u0631\u06af\u0631\u06cc \u0627\u0632 \u0632\u06cc\u0631 Status Bar \u062e\u0627\u0631\u062c \u0634\u062f \u0648 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f \u0648 \u0642\u0627\u0628\u0644 \u06a9\u0644\u06cc\u06a9 \u0634\u062f.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f5<br>Navigation \u062f\u0631 Compose<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u062a. \u062f\u0627\u062e\u0644 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0627\u062f\u06cc\u0645. \u0627\u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u06cc\u0686 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0646\u062f\u0627\u0631\u062f. \u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0641\u0631\u0648\u0634\u06af\u0627\u0647\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Home<br>\u2193<br>Product List<br>\u2193<br>Product Detail<br>\u2193<br>Payment<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627 \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0627:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Home<br>\u2193<br>Profile<br>\u2193<br>User Detail<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u06cc\u0646 \u0635\u0641\u062d\u0627\u062a \u062d\u0631\u06a9\u062a \u06a9\u0646\u062f\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u062e\u0648\u062f\u0634 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u062f \u0648 \u062d\u062a\u06cc \u0628\u0627 \u062f\u06a9\u0645\u0647 Back \u0628\u0647 \u0635\u0641\u062d\u0647 \u0642\u0628\u0644\u06cc \u0628\u0631\u06af\u0631\u062f\u062f. <strong>\u062f\u0631 Compose \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 Navigation Component \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Navigation \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Navigation \u06cc\u0639\u0646\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0631\u06a9\u062a \u0628\u06cc\u0646 \u0635\u0641\u062d\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647. <\/strong>\u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u0631\u0648\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u062a \u06a9\u0627\u0631\u0628\u0631 \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">UserCard<br>\u2193<br>Profile Screen<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627 \u0648\u0642\u062a\u06cc \u0631\u0648\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062e\u0627\u0635 \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">User ID = 15<br>\u2193<br>Detail Screen<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Navigation \u0645\u0633\u0626\u0648\u0644 \u0627\u06cc\u0646 \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0635\u0628 Navigation Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0648\u0644 \u0628\u0627\u06cc\u062f Dependency \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Navigation \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/strong> \u062f\u0627\u062e\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>build.gradle<\/code><\/pre>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n    \"androidx.navigation:navigation-compose:2.7.7\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;androidx.navigation:navigation-compose:2.7.7&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Sync \u06a9\u0631\u062f\u0646 \u067e\u0631\u0648\u0698\u0647\u060c Navigation \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0641\u0647\u0648\u0645 NavController<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0642\u0644\u0628 Navigation \u062f\u0631 Compose \u0686\u06cc\u0632\u06cc \u0628\u0647 \u0646\u0627\u0645 NavController \u0627\u0633\u062a.<\/strong> NavController \u0645\u0633\u0626\u0648\u0644:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0631\u0641\u062a\u0646 \u0628\u0647 \u0635\u0641\u062d\u0647 \u062c\u062f\u06cc\u062f<\/li>\n\n\n\n<li>\u0628\u0631\u06af\u0634\u062a\u0646 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0642\u0628\u0644\u06cc<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a Stack \u0635\u0641\u062d\u0627\u062a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Home<br>\u2193<br>Profile<br>\u2193<br>Detail<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>NavController \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0645\u06cc\u200c\u0633\u067e\u0627\u0631\u062f.<\/strong> \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 Back \u0628\u0632\u0646\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Detail<br>\u2193<br>Profile<br>\u2193<br>Home<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a NavController<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun AppNavigation(){\n\n    val navController =\n        rememberNavController()\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppNavigation<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> navController <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">rememberNavController<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 rememberNavController <strong>\u06cc\u06a9 NavController \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062d\u0641\u0638 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">NavHost \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u0645 \u0686\u0647 \u0635\u0641\u062d\u0627\u062a\u06cc \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 NavHost \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong><br>\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>NavHost(\n\n    navController = navController,\n\n    startDestination = \"home\"\n\n){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">NavHost<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    navController <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> navController,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    startDestination <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06af\u0641\u062a\u06cc\u0645 \u0635\u0641\u062d\u0647 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 home \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u0635\u0641\u062d\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0627\u062e\u0644 NavHost:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>NavHost(\n\n    navController = navController,\n    startDestination = \"home\"\n\n){\n\n    composable(\n        \"home\"\n    ){\n\n        HomeScreen()\n\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">NavHost<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    navController <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> navController,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    startDestination <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">HomeScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0648\u0642\u062a\u06cc \u0645\u0633\u06cc\u0631 home \u0628\u0627\u0632 \u0634\u062f\u060c \u0627\u06cc\u0646 Composable \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HomeScreen()\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0635\u0641\u062d\u0647 Profile<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>NavHost(\n\n    navController = navController,\n    startDestination = \"home\"\n\n){\n\n    composable(\n        \"home\"\n    ){\n\n        HomeScreen()\n\n    }\n\n\n    composable(\n        \"profile\"\n    ){\n\n        ProfileScreen()\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">NavHost<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    navController <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> navController,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    startDestination <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">HomeScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;profile&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0648 \u0645\u0633\u06cc\u0631 \u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>home\n\nprofile\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0631\u0641\u062a\u0646 \u0627\u0632 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0628\u0647 \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u062f\u0627\u062e\u0644 Home \u06cc\u06a9 Button \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Button(\n\n    onClick = {\n\n        navController.navigate(\n            \"profile\"\n        )\n\n    }\n\n){\n\n    Text(\n        \"Profile\"\n    )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        navController.<\/span><span style=\"color: #6F42C1\">navigate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #032F62\">&quot;profile&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;Profile&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Home<br>\u2193<br>Profile<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 \u0645\u0639\u0645\u0627\u0631\u06cc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0627\u06af\u0631 \u062f\u0627\u062e\u0644 \u0647\u0631 Composable \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>navController.navigate()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0645\u200c\u06a9\u0645 \u0647\u0645\u0647 \u0635\u0641\u062d\u0627\u062a \u0628\u0647 Navigation \u0648\u0627\u0628\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<strong> \u0631\u0627\u0647 \u0628\u0647\u062a\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 Event \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645.<\/strong> \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>HomeScreen(\n\n    onProfileClick = {\n\n        navController.navigate(\n            \"profile\"\n        )\n\n    }\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">HomeScreen<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onProfileClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        navController.<\/span><span style=\"color: #6F42C1\">navigate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #032F62\">&quot;profile&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062f\u0627\u062e\u0644 Home:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Button(\n\nonClick = {\n\n    onProfileClick()\n\n}\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">onProfileClick<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 Home \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u062f Navigation \u0686\u06cc\u0633\u062a. \u0641\u0642\u0637 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631 \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f. \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0639\u062f\u0627\u064b \u062f\u0631 MVVM \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u0635\u0641\u062d\u0647 \u0627\u0648\u0644 HomeScreen \u06a9\u0647 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc \u0631\u0648\u06cc \u06a9\u0627\u0631\u062a \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">UserCard<br>\u2193<br>ProfileScreen<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u0644\u06cc\u06a9 \u0628\u0647 UserCard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(\n    user:User\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user:<\/span><span style=\"color: #6F42C1\">User<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0634\u062a\u06cc\u0645. \u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserCard(\n\n    user:User,\n    onClick:()->Unit\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserCard<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    user:<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onClick:()<\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\">Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Card(\n\nmodifier =\nModifier\n    .clickable {\n        onClick()\n    }\n){\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Card<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">modifier <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Modifier<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">clickable<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">onClick<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06a9\u0627\u0631\u062a \u0642\u0627\u0628\u0644 \u06a9\u0644\u06cc\u06a9 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0631\u0633\u0627\u0644 User ID \u0628\u0647 \u0635\u0641\u062d\u0647 \u0645\u0642\u0635\u062f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0634\u0645\u0627\u0631\u0647 \u06f1\u06f5 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0644 User Object \u0631\u0627 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u0645. \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0641\u0642\u0637 ID \u0631\u0627 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b <strong>profile\/15<\/strong> \u06cc\u0639\u0646\u06cc \u0635\u0641\u062d\u0647 Profile \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0634\u0645\u0627\u0631\u0647 \u06f1\u06f5.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Route \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 NavHost:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composable(\n\n    route = \"profile\/{userId}\"\n\n){\n    ProfileScreen()\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    route <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;profile\/{userId}&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a {userId} \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0628\u0639\u062f\u0627\u064b \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0631\u0633\u0627\u0644 ID<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0644\u06cc\u06a9:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>onClick = {\n    navController.navigate(\n        \"profile\/${user.id}\"\n    )\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    navController.<\/span><span style=\"color: #6F42C1\">navigate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;profile\/${user.id}&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user.id = 15\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0634\u062f\u060c \u0645\u0633\u06cc\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>profile\/15\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062f\u0631\u06cc\u0627\u0641\u062a ID \u062f\u0631 \u0635\u0641\u062d\u0647 \u0645\u0642\u0635\u062f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Profile:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composable(\n    route = \"profile\/{userId}\"\n){\n\n    backStackEntry ->\n\n    val userId =\n        backStackEntry\n            .arguments\n            ?.getString(\n                \"userId\"\n            )\n\n\n    ProfileScreen(\n        userId\n    )\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    route <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;profile\/{userId}&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    backStackEntry <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> userId <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        backStackEntry<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            .arguments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            ?.<\/span><span style=\"color: #6F42C1\">getString<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #032F62\">&quot;userId&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        userId<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 arguments \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0646\u062a\u06cc\u062c\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>userId = 15\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun ProfileScreen(\n    userId:String?\n){\n\n    Text(\n        text = \"User ID : $userId\"\n    )\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ProfileScreen<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    userId:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;User ID : <\/span><span style=\"color: #005CC5\">$userId<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User ID : 15\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Detail Screen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0633\u0647 \u0635\u0641\u062d\u0647 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Home\n\n\u2193\n\nProfile\n\n\u2193\n\nDetail\n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Route\u0647\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>home\n\nprofile\/{userId}\n\ndetail\/{userId}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>NavHost(\n\nnavController,\n\nstartDestination = \"home\"\n\n){\n\ncomposable(\"home\"){\n\n}\n\n\ncomposable(\"profile\/{userId}\"){\n\n}\n\n\ncomposable(\"detail\/{userId}\"){\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">NavHost<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">navController,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">startDestination <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;home&quot;<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;profile\/{userId}&quot;<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;detail\/{userId}&quot;<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Back \u06a9\u0631\u062f\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u06af\u0634\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>navController.popBackStack()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>IconButton(\nonClick = {\n    navController.popBackStack()\n}\n){\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">IconButton<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    navController.<\/span><span style=\"color: #6F42C1\">popBackStack<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc \u0631\u0627 \u0628\u0628\u0646\u062f \u0648 \u0642\u0628\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0628\u062f\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0646\u062a\u0642\u0627\u0644 Object \u06a9\u0627\u0645\u0644 \u06cc\u0627 ID\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0645\u0647\u0645\u060c \u0686\u0631\u0627 User \u06a9\u0627\u0645\u0644 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0646\u06a9\u0646\u06cc\u0645\u061f<br>\u0645\u062b\u0644\u0627\u064b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">navigate(user)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062d\u062c\u0645 \u062f\u0627\u062f\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a State \u0633\u062e\u062a\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f<\/li>\n\n\n\n<li>\u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f\u060c \u062f\u0627\u062f\u0647 \u0642\u062f\u06cc\u0645\u06cc \u062f\u0627\u0631\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u0634 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">\u0627\u0631\u0633\u0627\u0644 ID<br>\u2193<br>\u06af\u0631\u0641\u062a\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 Repository<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">profile\/15\n\n\u2193\n\nRepository\n\n\u2193\n\nDatabase\/API\n\n\u2193\n\nUser\n<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 Navigation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ui\n\n \u251c\u2500\u2500 navigation\n\n \u2502     \u2514\u2500\u2500 AppNavigation.kt\n\n\n \u251c\u2500\u2500 home\n\n \u2502     \u2514\u2500\u2500 HomeScreen.kt\n\n\n \u251c\u2500\u2500 profile\n\n \u2502     \u2514\u2500\u2500 ProfileScreen.kt\n\n\n \u2514\u2500\u2500 detail\n\n       \u2514\u2500\u2500 DetailScreen.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0641\u0627\u06cc\u0644 Routes.kt<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0645\u0647 Route\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u0644 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646\u062f\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0627\u0645 Routes.kt \u0633\u0627\u062e\u062a\u06cc\u0645 \u0648 \u062f\u0627\u062e\u0644 \u0622\u0646 \u06cc\u06a9 object \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645. \u062f\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646\u060c object \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0647\u0631 \u062c\u0627\u06cc\u06cc \u0628\u0647 Route\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 object\u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u062b\u0627\u0628\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 const val \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645. \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631\u0647\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0642\u062f\u0627\u0631 \u062b\u0627\u0628\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u0646\u062f \u062a\u0627 \u0647\u0645 \u06a9\u062f \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0634\u0648\u062f \u0648 \u0647\u0645 \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0646\u0627\u0645 \u06cc\u06a9 Route \u0639\u0648\u0636 \u0634\u062f\u060c \u0641\u0642\u0637 \u0647\u0645\u0627\u0646 \u06cc\u06a9 \u062e\u0637 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 detail() \u0647\u0645 \u06cc\u06a9 Route \u06a9\u0627\u0645\u0644 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 15 \u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0631\u0634\u062a\u0647 detail\/15 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b \u0628\u0647 NavController \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u0632 \u0634\u0648\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u0627\u0628\u0639 AppNavigation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062e\u0644 MainActivity \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645\u060c \u0627\u0648\u0644 AppNavigation \u0631\u0648 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0686\u0647 \u0635\u0641\u062d\u0647\u200c\u0647\u0627\u06cc\u06cc \u062f\u0627\u0631\u0647 \u0648 \u0686\u0637\u0648\u0631 \u0628\u0627\u06cc\u062f \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647\u200c\u0647\u0627 \u062c\u0627\u0628\u0647\u200c\u062c\u0627 \u0628\u0634\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\"><strong>rememberNavController()<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 NavController \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val navController = rememberNavController()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NavController \u0645\u0633\u0626\u0648\u0644 \u0627\u0646\u062c\u0627\u0645 \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc\u200c\u0647\u0627\u0633\u062a\u061b \u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0645 \u0628\u0631\u0648 \u0628\u0647 \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u06cc\u0627 \u0628\u0631\u06af\u0631\u062f \u0628\u0647 \u0635\u0641\u062d\u0647 \u0642\u0628\u0644\u06cc\u060c \u0627\u06cc\u0646 \u06a9\u0646\u062a\u0631\u0644\u0631 \u062f\u0633\u062a\u0648\u0631 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647. remember \u0647\u0645 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 <strong>\u0628\u0627 \u0647\u0631 \u0628\u0627\u0631 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u06a9\u0646\u062a\u0631\u0644\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0633\u0627\u062e\u062a\u0647 \u0646\u0634\u0647<\/strong><strong>.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">NavHost<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">NavHost \u0645\u062d\u0644 \u062a\u0639\u0631\u06cc\u0641 \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647\u200c\u0647\u0627 \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0628\u0627 \u06a9\u0645\u06a9 NavController \u0648\u0636\u0639\u06cc\u062a Navigation \u0648 \u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0627\u0635\u0644\u06cc \u0628\u0647 \u0622\u0646 \u0645\u06cc\u200c\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">navController = navController<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">startDestination = Routes.DASHBOARD<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0644 \u06a9\u0646\u062a\u0631\u0644\u0631\u06cc\u0647 \u06a9\u0647 \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc\u200c\u0647\u0627 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. startDestination \u0647\u0645 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647\u060c \u0635\u0641\u062d\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u0639\u0631\u06cc\u0641 \u0647\u0631 \u0645\u0633\u06cc\u0631 \u0628\u0627 composable<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 NavHost \u0628\u0631\u0627\u06cc \u0647\u0631 \u0635\u0641\u062d\u0647 \u06cc\u06a9 composable \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0647\u0631 composable \u0645\u06cc\u06af\u0647 \u0648\u0642\u062a\u06cc \u0648\u0627\u0631\u062f \u06cc\u06a9 Route \u0634\u062f\u06cc\u0645\u060c \u0686\u0647 \u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u0628\u0627\u06cc\u062f \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composable(\n\n\u00a0\u00a0\u00a0 route = Routes.DASHBOARD\n\n) {\n\n\u00a0\u00a0\u00a0 DashboardScreen(...)\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 route <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Routes.DASHBOARD<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">DashboardScreen<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0648\u0642\u062a\u06cc Route \u0628\u0631\u0627\u0628\u0631 dashboard \u0628\u0648\u062f\u060c \u0635\u0641\u062d\u0647 DashboardScreen \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 userId<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>onUserClick = { userId -><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">onUserClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> { userId <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">userId \u0627\u0633\u0645 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u06cc\u0646 Lambda \u0627\u0633\u062a \u0648 \u0645\u06cc\u200c\u0634\u062f \u0627\u0633\u0645 \u062f\u06cc\u06af\u0631\u06cc \u0647\u0645 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f. \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0634\u0646\u0627\u0633\u0647 \u0647\u0645\u0627\u0646 \u0641\u0631\u062f \u0627\u0632 DashboardScreen \u0628\u0647 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0628\u0639\u062f \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0648\u0627\u0631\u062f \u0645\u0633\u06cc\u0631 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u06cc\u200c\u0634\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>navController.navigate(\n    Routes.detail(userId)\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">navController.<\/span><span style=\"color: #6F42C1\">navigate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Routes.<\/span><span style=\"color: #6F42C1\">detail<\/span><span style=\"color: #24292E\">(userId)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 15 \u0628\u0627\u0634\u0647\u060c Route \u0646\u0647\u0627\u06cc\u06cc \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">detail\/15<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Back Stack \u06cc\u0639\u0646\u06cc \u0686\u06cc\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Navigation \u0635\u0641\u062d\u0647\u200c\u0647\u0627\u06cc\u06cc \u0631\u0648 \u06a9\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0628\u0647\u200c\u062a\u0631\u062a\u06cc\u0628 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u067e\u0634\u062a\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0647 \u0622\u0646 Back Stack \u0645\u06cc\u06af\u0646. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0627\u0632 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0648\u0627\u0631\u062f \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0634\u06cc\u0645\u060c \u0648\u0636\u0639\u06cc\u062a \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Dashboard<br>Detail<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0635\u0641\u062d\u0647 Detail \u0628\u0627\u0644\u0627\u06cc \u067e\u0634\u062a\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0627\u0644\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0648\u0642\u062a\u06cc \u0628\u0631\u06af\u0631\u062f\u06cc\u0645\u060c \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0627\u0632 \u067e\u0634\u062a\u0647 \u062d\u0630\u0641 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">backStackEntry \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composable(\n\n\u00a0\u00a0\u00a0 route = Routes.DETAIL\n\n) { backStackEntry -><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">composable<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 route <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Routes.DETAIL<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) { backStackEntry <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0648\u062f<\/strong><strong> Navigation <\/strong><strong>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u0647. \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0634\u06cc\u0621 \u0627\u0632 \u0646\u0648\u0639 <\/strong><strong>NavBackStackEntry <\/strong><strong>\u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f<\/strong><strong>.<\/strong> \u0627\u0633\u0645 backStackEntry \u0631\u0648 \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u0645\u062b\u0644\u0627\u064b \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>) { entry -><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">) { entry <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062e\u0648\u062f \u0627\u06cc\u0646 \u0634\u06cc\u0621 \u0631\u0648 \u0645\u0627 \u0646\u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645\u061b Navigation \u0622\u0646 \u0631\u0627 \u0628\u0647 Lambda \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0627\u06cc\u0646 \u0634\u06cc\u0621 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u062b\u0644 Route \u0648 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc \u0631\u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u062f\u0631\u06cc\u0627\u0641\u062a userId \u0627\u0632 Route<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0648\u0627\u0631\u062f \u0645\u0633\u06cc\u0631\u06cc \u0645\u062b\u0644 detail\/15 \u0645\u06cc\u200c\u0634\u06cc\u0645\u060c \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u062e\u0644 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 userId \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0622\u0646 \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val userId = backStackEntry\n\n\u00a0\u00a0\u00a0 .arguments\n\n\u00a0\u00a0\u00a0 ?.getString(\"userId\")\n\n\u00a0\u00a0\u00a0 ?.toIntOrNull()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> userId <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> backStackEntry<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .arguments<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ?.<\/span><span style=\"color: #6F42C1\">getString<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;userId&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ?.<\/span><span style=\"color: #6F42C1\">toIntOrNull<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc \u0645\u06cc\u200c\u0634\u06cc\u0645\u060c \u0628\u0639\u062f \u0645\u0642\u062f\u0627\u0631 userId \u0631\u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a String \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0622\u062e\u0631 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u062f\u062f \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. toIntOrNull \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0642\u0627\u0628\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0639\u062f\u062f \u0646\u0628\u0648\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0637\u0627 \u0646\u062f\u0647 \u0648 \u0628\u0647\u200c\u062c\u0627\u06cc \u0622\u0646 null \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0627\u0631\u0633\u0627\u0644 \u0634\u0646\u0627\u0633\u0647 \u0628\u0647 DetailScreen<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0634\u0646\u0627\u0633\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0632 Route \u06af\u0631\u0641\u062a\u06cc\u0645\u060c \u0628\u0647 \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u06cc\u200c\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>DetailScreen(\n    userId = userId\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">DetailScreen<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    userId <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> userId<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0635\u0641\u062d\u0647 DetailScreen \u0647\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">popBackStack<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">navController.popBackStack()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc \u0627\u0632 \u0628\u0627\u0644\u0627\u06cc Back Stack \u062d\u0630\u0641 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0642\u0628\u0644\u06cc \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0647. \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u06cc\u0639\u0646\u06cc \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0633\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f6<br>\u0633\u0627\u062e\u062a Backend \u0633\u0627\u062f\u0647 \u0628\u0627 PHP \u0648 JSON<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0645\u0627\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0648\u062f. \u06cc\u06a9 \u0641\u0627\u06cc\u0644 JSON \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647 \u062f\u0627\u0634\u062a\u06cc\u0645 \u0648 \u0627\u0632 \u0647\u0645\u0627\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u06cc\u0686 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0635\u0644\u06cc \u0631\u0627 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06af\u0647 \u0646\u0645\u06cc\u200c\u062f\u0627\u0631\u062f. \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u0639\u0645\u0627\u0631\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Android App<br>\u2193<br>API Server<br>\u2193<br>Database<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0641\u0642\u0637 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0645\u0646 \u0628\u062f\u0647. \u0633\u0631\u0648\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f \u0648 \u062f\u0631 \u0642\u0627\u0644\u0628 JSON \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0628\u0627 PHP \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u062a\u0627 \u0647\u0645\u06cc\u0646 \u062c\u0631\u06cc\u0627\u0646 \u0631\u0627 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">API \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">API \u06cc\u06a9 \u0648\u0627\u0633\u0637 \u0628\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u0633\u0631\u0648\u0631 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b<strong> \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0633\u0631\u0648\u0631 \u0648\u0635\u0644 \u0634\u0648\u062f. \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Android<br>\u2193<br>MySQL Database<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0644\u0648 \u0645\u06cc\u200c\u0631\u0648\u062f<\/li>\n\n\n\n<li><strong>\u0627\u0645\u0646\u06cc\u062a \u067e\u0627\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u0622\u06cc\u062f<\/strong><\/li>\n\n\n\n<li>\u06a9\u0646\u062a\u0631\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0633\u062e\u062a \u0645\u06cc\u200c\u0634\u0648\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u0634 \u062f\u0631\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Android<br>\u2193<br>PHP API<br>\u2193<br>Database<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 PHP \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server\n\n \u2514\u2500\u2500 users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\necho \"Hello\";\n\n?>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">?php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">echo <\/span><span style=\"color: #032F62\">&quot;Hello&quot;<\/span><span style=\"color: #24292E\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">?<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc Hello \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u06cc\u0639\u0646\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0644\u0627\u0646 \u0627\u0648\u0644\u06cc\u0646 Endpoint \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 JSON<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0627 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u06a9\u0627\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a JSON \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n {\n  \"id\":1,\n  \"name\":\"Ali\"\n },\n {\n  \"id\":2,\n  \"name\":\"Reza\"\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">2<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Reza&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u062f\u0631 PHP:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\n$users = [\n\n    &#91;\n        \"id\" => 1,\n        \"name\" => \"Ali\"\n    &#93;,\n\n    &#91;\n        \"id\" => 2,\n        \"name\" => \"Reza\"\n    &#93;\n\n];\n\n\necho json_encode($users);\n\n\n?>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">?php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> [<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">2<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Reza&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">echo <\/span><span style=\"color: #6F42C1\">json_encode<\/span><span style=\"color: #24292E\">($users);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">?<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 json_encode \u0622\u0631\u0627\u06cc\u0647 PHP \u0631\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 JSON \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0633\u062a API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0627\u06af\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n {\n  \"id\":1,\n  \"name\":\"Ali\"\n },\n {\n  \"id\":2,\n  \"name\":\"Reza\"\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">2<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Reza&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645. \u06cc\u0639\u0646\u06cc \u0633\u0631\u0648\u0631 \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Header \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0641\u0642\u0637 \u062e\u0648\u062f \u062f\u0627\u062f\u0647 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a. \u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u06af\u0648\u06cc\u062f \u0627\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0686\u0647 \u0646\u0648\u0639\u06cc \u0627\u0633\u062a\u061f<br><\/strong>\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u062a\u0646<\/li>\n\n\n\n<li>HTML<\/li>\n\n\n\n<li>JSON<\/li>\n\n\n\n<li>\u062a\u0635\u0648\u06cc\u0631<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 Header \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0627\u0644\u0627\u06cc \u0641\u0627\u06cc\u0644 PHP:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>header(\n    \"Content-Type: application\/json\"\n);\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">header<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;Content-Type: application\/json&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645. \u062d\u0627\u0644\u0627 \u0633\u0631\u0648\u0631 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0645\u0646 \u062f\u0627\u0631\u0645 JSON \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0633\u062e\u0647 \u0628\u0647\u062a\u0631 users.php<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 API \u0645\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\nheader(\n    \"Content-Type: application\/json\"\n);\n\n\n$users = [\n\n    &#91;\n        \"id\"=>1,\n        \"name\"=>\"Ali\",\n        \"job\"=>\"Android Developer\"\n    &#93;,\n\n    &#91;\n        \"id\"=>2,\n        \"name\"=>\"Sara\",\n        \"job\"=>\"Designer\"\n    &#93;\n\n];\n\n\necho json_encode($users);\n\n?><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">?php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">header<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;Content-Type: application\/json&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> [<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;job&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;Android Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #005CC5\">2<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;Sara&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;job&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;Designer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    &#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">echo <\/span><span style=\"color: #6F42C1\">json_encode<\/span><span style=\"color: #24292E\">($users);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">?<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06cc\u06a9 API \u0648\u0627\u0642\u0639\u06cc\u200c\u062a\u0631 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Status Code \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0647\u0631 \u067e\u0627\u0633\u062e HTTP \u06cc\u06a9 \u0648\u0636\u0639\u06cc\u062a \u062f\u0627\u0631\u062f.<\/strong> \u0645\u062b\u0644\u0627\u064b\u060c \u0645\u0648\u0641\u0642:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>200 OK<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0637\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>500 Server Error<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>404 Not Found<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 PHP:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http_response_code(200)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a API \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062e\u0627\u0635 \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users.php?id=2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 PHP:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$id = $_GET&#91;\"id\"];\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u0642\u062f\u0627\u0631 2 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\nheader(\n\"Content-Type: application\/json\"\n);\n\n\n$id = $_GET&#91;\"id\"&#93;;\n\n\n$user = &#91;\n\n    \"id\"=>$id,\n\n    \"name\"=>\"Ali\"\n\n&#93;;\n\n\necho json_encode($user);\n\n?>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">?php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">header<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Content-Type: application\/json&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> $_GET&#91;<\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$user <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> &#91;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\">$id,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">echo <\/span><span style=\"color: #6F42C1\">json_encode<\/span><span style=\"color: #24292E\">($user);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">?<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users.php?id=5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0634\u062f\u060c \u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\"id\":\"5\",\n\"name\":\"Ali\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0631\u062a\u0628\u0627\u0637 Android \u0628\u0627 API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0633\u0645\u062a \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645. \u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">User App<br>\u2193<br>HTTP Request<br>\u2193<br>users.php<br>\u2193<br>JSON Response<br>\u2193<br>Kotlin Object<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0647\u0646\u0648\u0632 Retrofit \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645. \u0641\u0642\u0637 \u0645\u0641\u0647\u0648\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0627 \u0628\u0641\u0647\u0645\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 URL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b API \u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a. \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET\n\/users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u062c\u0648\u0627\u0628 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n {\n  \"id\":1,\n  \"name\":\"Ali\"\n }\n]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc\u200c\u062a\u0631 API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062e\u0631\u0648\u062c\u06cc \u0641\u0642\u0637 \u06cc\u06a9 Array \u0646\u06cc\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"success\":true,\n \"message\":\"Users loaded\",\n \"data\":&#91;\n   {\n    \"id\":1,\n    \"name\":\"Ali\"\n   }\n &#93;\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">true<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Users loaded&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;data&quot;<\/span><span style=\"color: #24292E\">:&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> &#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0631\u0627\u061f \u0686\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0648\u0636\u0639\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/li>\n\n\n\n<li>\u067e\u06cc\u0627\u0645 \u062e\u0637\u0627<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0636\u0627\u0641\u06cc<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0647\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u062e\u0637\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0628\u0647 \u062c\u0627\u06cc [] \u0628\u0647\u062a\u0631 \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"success\":false,\n \"message\":\"User not found\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">false<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;User not found&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">users.json<br>\u2193<br>Android<br>\u2193<br>LazyColumn<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0634\u062a\u06cc\u0645. \u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">PHP API<br>\u2193<br>Android<br>\u2193<br>LazyColumn<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc UI \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f. \u0641\u0642\u0637 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0639\u0648\u0636 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645 \u0627\u0633\u062a. \u0686\u0648\u0646 \u0628\u0639\u062f\u0627\u064b \u0628\u0627 Repository \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0633\u0631\u0648\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server\n\n \u251c\u2500\u2500 users.php\n\n \u251c\u2500\u2500 config.php\n\n \u2514\u2500\u2500 database.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0644\u0627\u064b users.php \u062a\u0646\u0647\u0627 API \u0645\u0627\u0633\u062a. \u0628\u0639\u062f\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u062a\u0635\u0627\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n\n\n\n<li>Login<\/li>\n\n\n\n<li>JWT<\/li>\n\n\n\n<li>Session<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u0648\u0644\u06cc\u0647<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u062a\u06cc \u062f\u0631 \u06cc\u06a9 API \u0633\u0627\u062f\u0647 \u0686\u0646\u062f \u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0647\u06cc\u0686\u200c\u0648\u0642\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0631\u0633\u0627\u0644 \u0646\u06a9\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u0628\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\"password\":\"123456\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u062e\u0648\u0628:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\"name\":\"Ali\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06a9\u0646<\/li>\n\n\n\n<li>\u062e\u0637\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0634\u0627\u0646 \u0646\u062f\u0647<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u0631\u0648\u0631 \u0631\u0627 \u0644\u0648 \u0646\u062f\u0647<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u0648\u0636\u06cc\u062d \u0641\u0627\u06cc\u0644 config.php<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 header \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062e\u0631\u0648\u062c\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0632 \u0646\u0648\u0639 JSON \u0648 \u0628\u0627 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc UTF-8 \u0627\u0633\u062a. \u062a\u0627\u0628\u0639 sendResponse \u0647\u0645 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc API \u0631\u0648 \u06cc\u06a9\u062f\u0633\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0631 \u0647\u0631 \u0642\u0633\u0645\u062a \u062f\u0648\u0628\u0627\u0631\u0647 json_encode \u0648 http_response_code \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645. \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0686\u0647\u0627\u0631 \u0645\u0642\u062f\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">success<br>message<br>data<br>statusCode<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u06cc\u06a9 \u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\n\u00a0\u00a0\u00a0 \"success\": true,\n\n\u00a0\u00a0\u00a0 \"message\": \"Users loaded\",\n\n\u00a0\u00a0\u00a0 \"data\": []\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">true<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #032F62\">&quot;Users loaded&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;data&quot;<\/span><span style=\"color: #24292E\">: []<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a ApiUser \u0648 User<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ApiUser \u062f\u0642\u06cc\u0642\u0627\u064b \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u062f\u0647 \u06a9\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645. \u0627\u0645\u0627 \u06a9\u0644\u0627\u0633 User \u0645\u062f\u0644 \u0627\u0635\u0644\u06cc \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0633\u062a \u0648 \u0645\u0645\u06a9\u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062e\u0635\u0648\u0635 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u062b\u0644 \u0634\u0646\u0627\u0633\u0647 \u062a\u0635\u0648\u06cc\u0631 Drawable \u0631\u0648 \u0647\u0645 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u062c\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u062f\u0644 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0631\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u062a\u0645\u0627\u0645 \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">HttpURLConnection \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HttpURLConnection <\/strong><strong>\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f<\/strong><strong> Java <\/strong><strong>\u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc<\/strong><strong> HTTP <\/strong><strong>\u0627\u0633\u062a. <\/strong>\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u062f\u0648\u0646 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 Retrofit\u060c \u062c\u0631\u06cc\u0627\u0646 \u0627\u0635\u0644\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 API \u0631\u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645. \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 suspend \u0647\u0633\u062a\u0646\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u0645\u06a9\u0646\u0647 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u0637\u0648\u0644 \u0628\u06a9\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648\u06cc Thread \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647\u061b \u0686\u0648\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0642\u0641\u0644 \u0645\u06cc\u0634\u0647. \u0628\u0627 suspend \u0648 Dispatchers.IO \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0631\u0648 \u0631\u0648\u06cc Thread \u0645\u0646\u0627\u0633\u0628 \u062f\u06cc\u06af\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">withContext(Dispatchers.IO)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Result \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 Repository \u0645\u0645\u06a9\u0646\u0647 \u0645\u0648\u0641\u0642 \u0628\u0634\u0647 \u06cc\u0627 \u0628\u0647 \u0639\u0644\u062a \u0642\u0637\u0639 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u060c \u062e\u0637\u0627\u06cc \u0633\u0631\u0648\u0631 \u06cc\u0627 JSON \u062e\u0631\u0627\u0628 \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 Result \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Result&lt;List&lt;User&gt;&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u0627\u064b \u062f\u0631 UI \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062d\u0627\u0644\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u0648 \u062e\u0637\u0627 \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">runCatching<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">runCatching {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06a9\u062f \u062f\u0627\u062e\u0644 \u062e\u0648\u062f\u0634 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u0647\u060c \u06cc\u06a9 \u0646\u062a\u06cc\u062c\u0647 \u0645\u0648\u0641\u0642 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647 \u0648 \u0627\u06af\u0631<\/strong><strong> Exception <\/strong><strong>\u0631\u062e \u0628\u062f\u0647\u060c \u0646\u062a\u06cc\u062c\u0647 \u0634\u06a9\u0633\u062a\u200c\u062e\u0648\u0631\u062f\u0647 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647<\/strong><strong>.<\/strong> \u067e\u0633 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0686\u0646\u062f\u06cc\u0646 try\/catch \u062c\u062f\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0633\u0647 \u0648\u0636\u0639\u06cc\u062a \u0627\u0635\u0644\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u060c \u0635\u0641\u062d\u0647 \u0646\u0628\u0627\u06cc\u062f \u0641\u0642\u0637 \u062d\u0627\u0644\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0645\u0627 \u0633\u0647 \u0648\u0636\u0639\u06cc\u062a \u0627\u0635\u0644\u06cc \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Loading<br>Success<br>Error<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062d\u0627\u0644\u062a Loading \u06cc\u06a9 Progress \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u06cc\u0645. \u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0647\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0646\u0634\u0648\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0627\u06af\u0631 \u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0647\u060c \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u062e\u0644 LazyColumn \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Generic \u06cc\u0627 T \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class ApiResponse&lt;T>(\n\n\u00a0\u00a0\u00a0 val success: Boolean,\n\n\u00a0\u00a0\u00a0 val message: String,\n\n\u00a0\u00a0\u00a0 val data: T?\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ApiResponse<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt;(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success: <\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0631\u0641 <\/strong><strong>T <\/strong><strong>\u06cc\u06a9 <\/strong><strong>Generic Type <\/strong><strong>\u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0627\u0632 \u0642\u0628\u0644 \u0645\u0634\u062e\u0635 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645 \u06a9\u0647 <\/strong><strong>data <\/strong><strong>\u0686\u0647 \u0646\u0648\u0639 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0646\u06af\u0647 \u062f\u0627\u0631\u062f \u0648 \u0628\u0639\u062f\u0627\u064b \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u0646\u0648\u0639 \u0622\u0646 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645<\/strong><strong>.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0632 T \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0647\u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631 data \u06cc\u06a9\u0633\u0627\u0646 \u0646\u06cc\u0633\u062a. \u06af\u0627\u0647\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u0634\u062f\u060c \u06af\u0627\u0647\u06cc \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u062d\u062a\u06cc \u062f\u0631 API\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u0648\u0639 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u06af\u0631 T \u0631\u0627 \u0646\u062f\u0627\u0634\u062a\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0648\u0639 \u067e\u0627\u0633\u062e \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0645\u06cc\u200c\u0646\u0648\u0634\u062a\u06cc\u0645. \u0627\u0645\u0627 \u0628\u0627 Generic \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0647\u0631 \u0628\u0627\u0631 \u0646\u0648\u0639 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0645\u0648\u0642\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">T \u0627\u0632 \u06a9\u062c\u0627 \u0645\u0642\u062f\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f T \u0628\u0647\u200c\u062a\u0646\u0647\u0627\u06cc\u06cc \u0645\u0639\u0646\u06cc \u062e\u0627\u0635\u06cc \u0646\u062f\u0627\u0631\u062f. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0646\u0648\u0639 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u062f\u0627\u062e\u0644 &lt; &gt; \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ApiResponse&lt;ApiUser&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c T \u0628\u0631\u0627\u0628\u0631 ApiUser \u0645\u06cc\u200c\u0634\u0648\u062f. \u06cc\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ApiResponse&lt;List&lt;ApiUser&gt;&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 T \u0628\u0631\u0627\u0628\u0631 List&lt;ApiUser&gt; \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u067e\u0633 T \u0628\u0647 \u06a9\u0644\u0627\u0633 ApiUser \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a\u061b \u0647\u0631 \u0646\u0648\u0639\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 &lt; &gt; \u0642\u0631\u0627\u0631 \u0628\u062f\u0647\u06cc\u0645\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 T \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Box \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Box \u06cc\u06a9\u06cc \u0627\u0632 Layout\u0647\u0627\u06cc Jetpack Compose \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0648\u06cc\u0648 \u0631\u0627 \u0631\u0648\u06cc \u0647\u0645 \u06cc\u0627 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0641\u0636\u0627\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647\u062f. \u0645\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0632 Box \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u060c \u0645\u062b\u0644 Loading \u06cc\u0627 Error\u060c <strong>\u0645\u062d\u062a\u0648\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0648\u0633\u0637 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f.<\/strong> \u0648\u0642\u062a\u06cc \u0647\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u060c LazyColumn \u062f\u0627\u062e\u0644 \u0647\u0645\u06cc\u0646 Box \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">LaunchedEffect \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">LaunchedEffect \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u06cc\u0627 \u0647\u0646\u06af\u0627\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u0646\u062f. <strong>\u0645\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0627\u062e\u0644 <\/strong><strong>LaunchedEffect <\/strong><strong>\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645\u060c \u0686\u0648\u0646 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0627 \u0647\u0631 \u0628\u0627\u0631 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f.<\/strong> \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0641\u0642\u0637 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u0635\u0641\u062d\u0647 (\u06cc\u0627 \u062a\u063a\u06cc\u06cc\u0631 userId \u062f\u0631 \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a) \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0632 when \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0633\u0647 \u062d\u0627\u0644\u062a \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062f\u0631 \u062d\u0627\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a (Loading)<\/li>\n\n\n\n<li>\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627 \u062e\u0637\u0627 (Error)<\/li>\n\n\n\n<li>\u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0648\u0641\u0642 \u0627\u0637\u0644\u0627\u0639\u0627\u062a (Success)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">when \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0631\u062a\u0628 \u0648 \u062e\u0648\u0627\u0646\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645. <strong>\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0646\u062f\u06cc\u0646 <\/strong><strong>if <\/strong><strong>\u062a\u0648 \u062f\u0631 \u062a\u0648 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0628\u0627 <\/strong><strong>when <\/strong><strong>\u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062f\u0631 \u0647\u0631 \u0648\u0636\u0639\u06cc\u062a \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0628\u0627\u06cc\u062f \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f<\/strong><strong>.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Result \u0686\u06cc\u0633\u062a\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Result \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0622\u0645\u0627\u062f\u0647 \u062f\u0631 \u062e\u0648\u062f \u0632\u0628\u0627\u0646 Kotlin \u0627\u0633\u062a. \u0648\u0642\u062a\u06cc \u0627\u0632 Result \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 <strong>\u06cc\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\u060c \u06cc\u0627 \u0627\u06af\u0631 \u0645\u0634\u06a9\u0644\u06cc \u067e\u06cc\u0634 \u0628\u06cc\u0627\u06cc\u062f\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0637\u0627 \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/strong> \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">suspend fun getUsers(): Result&lt;List&lt;User&gt;&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u067e\u06cc\u0634 \u0628\u0631\u0648\u062f\u060c \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 (List&lt;User&gt;) \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u0645\u0627 \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0628\u0627\u0634\u062f\u060c \u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e \u0646\u062f\u0647\u062f \u06cc\u0627 \u0647\u0631 \u062e\u0637\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0627\u062a\u0641\u0627\u0642 \u0628\u06cc\u0641\u062a\u062f\u060c \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0631\u0634 \u06a9\u0646\u062f\u060c \u0622\u0646 \u062e\u0637\u0627 \u062f\u0627\u062e\u0644 Result \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0628\u0639\u062f\u0627\u064b \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u06cc\u0644\u06cc \u0631\u0627\u062d\u062a \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>repository\n\n\u00a0\u00a0\u00a0 .getUsers()\n\n\u00a0\u00a0\u00a0 .onSuccess {\n\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 .onFailure {\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">repository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">onSuccess<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">onFailure<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c onSuccess \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u0628\u062f\u0647\u062f\u060c onFailure \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f. \u0647\u0645\u06cc\u0646 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0648 \u062a\u0645\u06cc\u0632\u062a\u0631 \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">TypeToken \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f\u060c \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062a\u0646 JSON \u0627\u0633\u062a. \u0627\u0645\u0627 Gson \u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f \u0627\u06cc\u0646 \u0645\u062a\u0646 \u0631\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0647 \u0686\u0647 \u0646\u0648\u0639 \u06a9\u0644\u0627\u0633\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 Gson \u0645\u06cc\u200c\u06af\u0648\u06cc\u06cc\u0645: \u00ab\u0627\u06cc\u0646 JSON \u0631\u0627 \u0628\u0647 \u06cc\u06a9 ApiResponse \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646 \u06a9\u0647 \u062f\u0627\u062e\u0644\u0634 \u06cc\u06a9 List&lt;ApiUser&gt; \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.\u00bb<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val responseType =\n\n\u00a0\u00a0\u00a0 object :\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TypeToken&lt;ApiResponse&lt;List&lt;ApiUser>>>() {}.type<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> responseType <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 object :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">TypeToken<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">ApiResponse<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">ApiUser<\/span><span style=\"color: #24292E\">&gt;&gt;&gt;() {}.type<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0627\u06cc\u0646 \u06a9\u062f \u062e\u0648\u062f\u0650 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u06cc\u0633\u062a\u061b \u0628\u0644\u06a9\u0647 \u0641\u0642\u0637 <strong>\u0646\u0648\u0639 \u062f\u0627\u062f\u0647<\/strong> \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u0648 \u062f\u0627\u062e\u0644 \u0645\u062a\u063a\u06cc\u0631 responseType \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0639\u062f \u062f\u0631 \u062e\u0637 \u0628\u0639\u062f\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0648\u0639 \u0631\u0627 \u0628\u0647 Gson \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val response =\n\n\u00a0\u00a0\u00a0 Gson().fromJson(\n\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0json,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 responseType\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> response <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Gson<\/span><span style=\"color: #24292E\">().<\/span><span style=\"color: #6F42C1\">fromJson<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0json,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 responseType<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 TypeToken \u0631\u0627 \u0646\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c Gson \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0634\u062e\u06cc\u0635 \u0628\u062f\u0647\u062f \u06a9\u0647 \u062f\u0627\u062e\u0644 data \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u06cc\u06a9 List&lt;ApiUser&gt; \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u062f \u0648 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0627\u0634\u062a\u0628\u0627\u0647 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f \u06cc\u0627 \u062d\u062a\u06cc \u062e\u0637\u0627 \u0628\u062f\u0647\u062f. \u0628\u0647 \u0632\u0628\u0627\u0646 \u0633\u0627\u062f\u0647\u060c TypeToken \u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0627\u0647\u0646\u0645\u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 Gson \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f <strong>\u00ab<\/strong><strong>\u0627\u06cc\u0646<\/strong><strong> JSON <\/strong><strong>\u0631\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0647 \u0686\u0647 \u0646\u0648\u0639 \u0634\u06cc\u0626\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646<\/strong><strong>.\u00bb<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">orEmpty \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 response.data \u0645\u0645\u06a9\u0646\u0647 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627\u0634\u0647\u060c \u0648\u0644\u06cc \u0686\u0648\u0646 \u062f\u0631 ApiResponse \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val data: T?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 data \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 null \u0647\u0645 \u0628\u0627\u0634\u0647. \u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>response.data\n\u00a0\u00a0\u00a0 .orEmpty()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">response.<\/span><span style=\"color: #D73A49\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">orEmpty<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u06af\u0647: \u00ab\u0627\u06af\u0631 data \u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u0634\u062a\u060c \u0647\u0645\u0648\u0646 \u0631\u0648 \u0628\u062f\u0647\u061b \u0627\u06af\u0631 null \u0628\u0648\u062f\u060c \u0628\u0647\u200c\u062c\u0627\u0634 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062e\u0627\u0644\u06cc \u0628\u062f\u0647.\u00bb<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062f\u0631 \u0639\u0645\u0644:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">response.data.orEmpty()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0645\u0639\u0627\u062f\u0644 \u0627\u06cc\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">response.data ?: emptyList()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0631\u0648\u06cc \u0644\u06cc\u0633\u062a\u06cc \u06a9\u0647 \u0628\u0647 \u062f\u0633\u062a \u0627\u0648\u0645\u062f\u0647 map \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.map { apiUser ->\n\n\u00a0\u00a0\u00a0 apiUser.toUser()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> { apiUser <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 apiUser.<\/span><span style=\"color: #6F42C1\">toUser<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 data \u0634\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631\u0647\u0627 \u0628\u0627\u0634\u0647\u060c \u0647\u0645\u0647\u200c\u0634\u0648\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0646. \u0627\u06af\u0631 data \u0628\u0631\u0627\u0628\u0631 null \u0628\u0627\u0634\u0647\u060c orEmpty() \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062e\u0627\u0644\u06cc \u0645\u06cc\u200c\u062f\u0647 \u0648 map \u0647\u0645 \u0631\u0648\u06cc \u0644\u06cc\u0633\u062a \u062e\u0627\u0644\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0647\u061b \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u062e\u0631\u0648\u062c\u06cc \u0647\u0645 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062e\u0627\u0644\u06cc \u0645\u06cc\u200c\u0634\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0637\u0627 \u0646\u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">connectTimeout \u0648 readTimeout \u0686\u0647 \u0641\u0631\u0642\u06cc \u062f\u0627\u0631\u0646\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0647\u060c \u0686\u0646\u062f \u062a\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u06cc\u0645. \u0627\u0648\u0644 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0646\u0648\u0639 GET \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">connection.requestMethod = &#8220;GET&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u062f\u0648 \u062a\u0627 \u0632\u0645\u0627\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062e\u06cc\u0644\u06cc\u200c\u0647\u0627 \u0627\u0648\u0644\u0634 \u0628\u0627 \u0647\u0645 \u0642\u0627\u0637\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">connectTimeout<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0632\u0645\u0627\u0646 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 <strong>\u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631<\/strong>\u0647. \u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u06af\u0647:<strong> <\/strong><strong>\u00ab<\/strong><strong>\u0627\u06af\u0631 \u062a\u0627 \u06f1\u06f0 \u062b\u0627\u0646\u06cc\u0647 \u0646\u062a\u0648\u0646\u0633\u062a\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0648\u0635\u0644 \u0628\u0634\u06cc\u060c \u0628\u06cc\u200c\u062e\u06cc\u0627\u0644\u0634 \u0634\u0648 \u0648 \u062e\u0637\u0627 \u0628\u062f\u0647<\/strong><strong>.\u00bb<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u06a9\u0627\u0631\u0628\u0631 \u0642\u0637\u0639 \u0628\u0627\u0634\u0647\u060c \u06cc\u0627 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0627\u0634\u0647\u060c \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0627\u0635\u0644\u0627\u064b \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u0628\u0627\u0634\u0647\u061b \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a connectTimeout \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">readTimeout<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f. \u062d\u0627\u0644\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0646\u062a\u0638\u0631\u0647 \u06a9\u0647 \u0633\u0631\u0648\u0631 \u062c\u0648\u0627\u0628 \u0628\u062f\u0647. readTimeout \u0645\u06cc\u06af\u0647:<strong> \u00ab\u0627\u06af\u0631 \u0628\u0639\u062f \u0627\u0632 \u0648\u0635\u0644 \u0634\u062f\u0646\u060c \u0633\u0631\u0648\u0631 \u062a\u0627 \u06f1\u06f0 \u062b\u0627\u0646\u06cc\u0647 \u0647\u06cc\u0686 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0646\u0641\u0631\u0633\u062a\u0627\u062f\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646 \u0648 \u062e\u0637\u0627 \u0628\u062f\u0647.\u00bb<\/strong> \u0645\u062b\u0644\u0627\u064b \u0633\u0631\u0648\u0631 \u062e\u06cc\u0644\u06cc \u0634\u0644\u0648\u063a \u0628\u0627\u0634\u0647 \u06cc\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0637\u0648\u0644 \u0628\u06a9\u0634\u0647 \u0648 \u0647\u06cc\u0686 \u067e\u0627\u0633\u062e\u06cc \u0627\u0631\u0633\u0627\u0644 \u0646\u06a9\u0646\u0647\u061b \u0627\u06cc\u0646\u062c\u0627 readTimeout \u0648\u0627\u0631\u062f \u0639\u0645\u0644 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0642\u06cc\u0642\u0627\u064b \u06a9\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u0634\u0647\u061f<\/strong><strong><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>connection.requestMethod = \"GET\"\n\nconnection.connectTimeout = 10_000\n\nconnection.readTimeout = 10_000<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">connection.requestMethod <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;GET&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">connection.connectTimeout <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">10_000<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">connection.readTimeout <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">10_000<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 \u062f\u0627\u0631\u06cc\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0647\u0646\u0648\u0632 \u0647\u06cc\u0686 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062f\u0647<strong>.<\/strong><strong> \u062d\u0627\u0644\u0627 \u0633\u0624\u0627\u0644 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u067e\u0633 \u06a9\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u061f \u0627\u06cc\u0646\u062c\u0627<\/strong><strong>:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val statusCode = connection.responseCode<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u06cc\u0646 \u0644\u062d\u0638\u0647. <strong>\u0648\u0642\u062a\u06cc \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 responseCode \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u06cc\u060c \u062c\u0627\u0648\u0627 \u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u062e\u0648\u062f\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0645\u0646\u062a\u0638\u0631 \u062c\u0648\u0627\u0628 \u0645\u06cc\u200c\u0645\u0648\u0646\u0647 \u0648 \u0628\u0639\u062f \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a (\u0645\u062b\u0644\u0627\u064b 200 \u06cc\u0627 404) \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647.<\/strong> <strong>\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u062e\u0637\u060c \u0641\u0642\u0637 \u00ab\u062e\u0648\u0627\u0646\u062f\u0646\u00bb \u0646\u06cc\u0633\u062a\u061b \u062f\u0631 \u0639\u0645\u0644 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0645 \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0647.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0642\u0628\u0644\u0634 connection.connect \u0647\u0645 \u0635\u062f\u0627 \u0632\u062f\u0647 \u0628\u0627\u0634\u06cc\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u0632\u0648\u062f\u062a\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u0634\u0647\u061b \u0648\u0644\u06cc \u0628\u0627\u0632 \u062a\u0627 \u0648\u0642\u062a\u06cc \u062c\u0648\u0627\u0628 \u0646\u062e\u0648\u0627\u06cc (\u0645\u062b\u0644 responseCode \u06cc\u0627 inputStream) \u0686\u06cc\u0632\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc\u200c\u06a9\u0646\u06cc.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">inputStream \u0686\u06cc\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0628\u0647 \u06cc\u06a9 \u0631\u0633\u062a\u0648\u0631\u0627\u0646 \u0633\u0641\u0627\u0631\u0634 \u063a\u0630\u0627 \u062f\u0627\u062f\u06cc. \u0633\u0641\u0627\u0631\u0634 \u0631\u0648 \u0641\u0631\u0633\u062a\u0627\u062f\u06cc\u060c \u062d\u0627\u0644\u0627 \u063a\u0630\u0627 \u0631\u0648 \u0628\u0631\u0627\u062a \u0622\u0648\u0631\u062f\u0646. inputStream \u0647\u0645 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0648\u0646 \u063a\u0630\u0627\u06cc \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a\u061b \u06cc\u0639\u0646\u06cc <strong>\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0641\u0631\u0633\u062a\u0627\u062f\u0647<\/strong><strong>.<\/strong> \u0645\u062b\u0644\u0627\u064b \u0633\u0631\u0648\u0631 \u0627\u06cc\u0646 JSON \u0631\u0648 \u0641\u0631\u0633\u062a\u0627\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n\n\u00a0 {\n\n\u00a0\u00a0\u00a0 \"id\":1,\n\n\u00a0\u00a0\u00a0 \"name\":\"Ali\"\n\n\u00a0 }\n\n&#93;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 JSON \u062f\u0627\u062e\u0644 inputStream \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0628\u0639\u062f \u0645\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>responseStream\n\n\u00a0\u00a0\u00a0 .bufferedReader()\n\n\u00a0\u00a0\u00a0 .readText()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">responseStream<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">bufferedReader<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">readText<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644 \u0627\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0646 \u0645\u06cc\u200c\u062e\u0648\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">errorStream \u0686\u06cc\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0633\u0631\u0648\u0631 \u062e\u0637\u0627 \u0628\u062f\u0647\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627\u0632 \u0647\u0645 \u06cc\u0647 \u067e\u06cc\u0627\u0645 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\n\u00a0\u00a0\u00a0 \"success\": false,\n\n\u00a0\u00a0\u00a0 \"message\": \"User not found\"\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">false<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #032F62\">&quot;User not found&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627 404 Not Found \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u06af\u0647 \u062f\u0627\u062e\u0644 inputStream \u0646\u06cc\u0633\u062a. \u062f\u0627\u062e\u0644 errorStream \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (statusCode in 200..299) {\n\n\u00a0\u00a0\u00a0 connection.inputStream\n\n} else {\n\n\u00a0\u00a0\u00a0 connection.errorStream\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (statusCode <\/span><span style=\"color: #D73A49\">in<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">200<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #005CC5\">299<\/span><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 connection.inputStream<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">} <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 connection.errorStream<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u060c \u062c\u0648\u0627\u0628 \u0631\u0648 \u0627\u0632 inputStream \u0628\u062e\u0648\u0646.<\/li>\n\n\n\n<li>\u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0637\u0627 \u062f\u0627\u0634\u062a\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0648 \u0627\u0632 errorStream \u0628\u062e\u0648\u0646.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0631\u0627 \u062c\u0644\u0648\u06cc <\/strong><strong>remember <\/strong><strong>\u0622\u06a9\u0648\u0644\u0627\u062f \u0628\u0627\u0632 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val repository =\n\n\u00a0\u00a0\u00a0 remember {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 UserRepository()\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0627\u06cc\u062f \u0628\u0627 \u062e\u0648\u062f\u062a \u0628\u06af\u06cc \u0686\u0631\u0627 \u0627\u06cc\u0646\u062c\u0648\u0631\u06cc \u0646\u0648\u0634\u062a\u06cc\u0645\u061f \u0686\u0631\u0627 \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646\u0648 \u0646\u0646\u0648\u0634\u062a\u06cc\u0645\u061f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">remember(UserRepository())<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 remember \u06cc\u06a9 <strong>\u062a\u0627\u0628\u0639<\/strong> \u0647\u0633\u062a \u06a9\u0647 \u06cc\u0647 \u062a\u06a9\u0647 \u06a9\u062f \u0631\u0648 \u0627\u0632 \u0645\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0641\u0642\u0637 <strong>\u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631<\/strong> \u0627\u062c\u0631\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u0648\u0646 \u0622\u06a9\u0648\u0644\u0627\u062f \u062f\u0631 \u0648\u0627\u0642\u0639 \u0647\u0645\u0648\u0646 \u062a\u06a9\u0647 \u06a9\u062f\u0647. \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646\u062c\u0627 \u062f\u0627\u0631\u06cc\u0645 \u0628\u0647 remember \u0645\u06cc\u200c\u06af\u06cc\u0645: <strong>\u00ab\u0641\u0642\u0637 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646 \u0648 \u06cc\u0647 UserRepository \u0628\u0633\u0627\u0632. \u062f\u0641\u0639\u0627\u062a \u0628\u0639\u062f\u06cc \u0647\u0645\u0648\u0646 \u0642\u0628\u0644\u06cc \u0631\u0648 \u0628\u0631\u06af\u0631\u062f\u0648\u0646.\u00bb<\/strong> \u0627\u06af\u0631 \u0635\u0641\u062d\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 Recompose \u0628\u0634\u0647\u060c \u062f\u06cc\u06af\u0647 UserRepository \u0627\u0632 \u0646\u0648 \u0633\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u200c\u0634\u0647. <strong>\u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc\u060c \u0647\u0631 \u0648\u0642\u062a \u0628\u062e\u0648\u0627\u06cc\u0645 remember \u06cc\u0647 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0647\u060c \u0627\u0632 \u0622\u06a9\u0648\u0644\u0627\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">by \u0627\u06cc\u0646\u062c\u0627 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var users by remember {\n\n\u00a0\u00a0\u00a0 mutableStateOf(emptyList&lt;User>())\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #6F42C1\">emptyList<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;())<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0648\u0627\u0642\u0639 remember \u06cc\u0647 MutableState \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647. \u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 by \u0646\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val users = remember {\n\n\u00a0\u00a0\u00a0 mutableStateOf(emptyList&lt;User>())\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #6F42C1\">emptyList<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;())<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0647\u0631 \u0628\u0627\u0631 \u0628\u062e\u0648\u0627\u06cc\u0645 \u0645\u0642\u062f\u0627\u0631\u0634 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645 \u06cc\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645 \u0628\u0627\u06cc\u062f \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">users.value<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">users.value = loadedUsers<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 by \u0627\u06cc\u0646 .value \u0631\u0648 \u0627\u0632 \u062f\u06cc\u062f \u0645\u0627 \u0645\u062e\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">users = loadedUsers<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Text(users.size.toString())<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 by \u0641\u0642\u0637 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u06a9\u062f \u062a\u0645\u06cc\u0632\u062a\u0631 \u0648 \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0628\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0633\u0647 \u062a\u0627 State \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0633\u0647 \u062a\u0627 \u0648\u0636\u0639\u06cc\u062a \u0645\u062e\u062a\u0644\u0641 \u0635\u0641\u062d\u0647 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>users<\/strong><br>\u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>isLoading<\/strong><br>\u0622\u06cc\u0627 \u0647\u0646\u0648\u0632 \u0645\u0646\u062a\u0638\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0647\u0633\u062a\u06cc\u0645 \u06cc\u0627 \u0646\u0647<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>errorMessage<\/strong><br>\u0627\u06af\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0647\u0631 \u0648\u0642\u062a \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 State\u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647\u060c Compose \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648 \u0628\u0647\u200c\u0631\u0648\u0632 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">onSuccess \u0648 onFailure \u0627\u0632 \u06a9\u062c\u0627 \u0627\u0648\u0645\u062f\u0646\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0648 \u062a\u0627 \u0627\u0632 \u06a9\u0644\u0627\u0633 Result \u0645\u06cc\u0627\u0646. \u06cc\u0627\u062f\u062a \u0647\u0633\u062a \u062f\u0627\u062e\u0644 Repository \u06af\u0641\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getUsers(): Result&lt;List&lt;User>><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">(): <\/span><span style=\"color: #6F42C1\">Result<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc getUsers \u06cc\u06a9 \u0634\u06cc\u0621 \u0627\u0632 \u0646\u0648\u0639 Result \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647. \u06a9\u0644\u0627\u0633 Result \u062f\u0627\u062e\u0644 \u062e\u0648\u062f Kotlin \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0648 \u062f\u0648 \u062a\u0627 \u062a\u0627\u0628\u0639 \u062e\u06cc\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">onSuccess { &#8230; }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u060c \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0647. \u0648<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">onFailure { &#8230; }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0627 \u062e\u0637\u0627 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u060c \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0647. \u06cc\u0639\u0646\u06cc \u0645\u0627 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (...) {\n\n\u00a0\u00a0\u00a0 ...\n\n} else {\n\n\u00a0\u00a0\u00a0 ...\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">} <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f Result \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u0628\u0631\u0627\u0645\u0648\u0646 \u0633\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>return@LaunchedEffect \u06cc\u0639\u0646\u06cc \u0686\u06cc\u061f<\/strong> \u0627\u06cc\u0646\u062c\u0627 \u0627\u0648\u0644 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0622\u06cc\u0627 userId \u0645\u0639\u062a\u0628\u0631\u0647 \u06cc\u0627 \u0646\u0647.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (userId == null) {\n\n\u00a0\u00a0\u00a0 errorMessage = \"\u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a\"\n\n\u00a0\u00a0\u00a0 isLoading = false\n\n\u00a0\u00a0\u00a0 return@LaunchedEffect\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (userId <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 errorMessage <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 isLoading <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">false<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\">@LaunchedEffect<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 userId \u0628\u0631\u0627\u0628\u0631 null \u0628\u0627\u0634\u0647\u060c \u0627\u0635\u0644\u0627\u064b \u0627\u062f\u0627\u0645\u0647\u200c\u06cc \u06a9\u062f \u0646\u0628\u0627\u06cc\u062f \u0627\u062c\u0631\u0627 \u0628\u0634\u0647. \u0686\u0648\u0646 \u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">repository.getUser(userId)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0647 \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647\u200c\u06cc \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u06af\u0631 userId \u0646\u0627\u0644 \u0628\u0627\u0634\u0647\u060c \u0627\u0648\u0644 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u0628\u0639\u062f \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">return@LaunchedEffect<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u062c\u0631\u0627\u06cc LaunchedEffect \u0631\u0648 \u0647\u0645\u0648\u0646\u200c\u062c\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/strong> \u06cc\u0639\u0646\u06cc \u0647\u0631 \u06a9\u062f\u06cc \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0637 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647\u060c \u062f\u06cc\u06af\u0647 \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0641\u0642\u0637 return \u0646\u0646\u0648\u0634\u062a\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0627\u0644\u0627\u0646 \u062f\u0627\u062e\u0644 \u06cc\u06a9 LaunchedEffect \u0647\u0633\u062a\u06cc\u0645. \u0627\u06af\u0631 \u0641\u0642\u0637 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 return\u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u062a\u0648\u062c\u0647 \u0646\u0645\u06cc\u200c\u0634\u0647 \u06a9\u0647 \u0645\u0646\u0638\u0648\u0631\u062a \u062e\u0631\u0648\u062c \u0627\u0632 \u06a9\u062f\u0648\u0645 \u0628\u062e\u0634\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0633\u0645 \u0628\u0644\u0627\u06a9\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u06cc \u0627\u0632\u0634 \u062e\u0627\u0631\u062c \u0628\u0634\u06cc \u0631\u0648 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">return@LaunchedEffect<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc<strong> <\/strong><strong>\u00ab<\/strong><strong>\u0627\u0632 \u0647\u0645\u06cc\u0646 <\/strong><strong>LaunchedEffect <\/strong><strong>\u062e\u0627\u0631\u062c \u0634\u0648 \u0648 \u0627\u062f\u0627\u0645\u0647\u200c\u06cc \u06a9\u062f\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u0634 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646<\/strong><strong>.\u00bb<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">return@Column \u06cc\u0639\u0646\u06cc \u0686\u06cc\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0642\u0628\u0644\u0634 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">user != null<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0637\u0628\u06cc\u0639\u062a\u0627\u064b \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 user \u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0627\u0645\u0627 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0647\u0646\u0648\u0632 \u0635\u062f\u062f\u0631\u0635\u062f \u0645\u0637\u0645\u0626\u0646 \u0646\u06cc\u0633\u062a \u06a9\u0647 user \u0646\u0627\u0644 \u0646\u06cc\u0633\u062a. \u0686\u0648\u0646 user \u06cc\u06a9 <strong>State<\/strong> \u0647\u0633\u062a \u0648 \u0627\u0632 \u0646\u0638\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u0645\u06a9\u0646\u0647 \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u062e\u0637 \u0648 \u062e\u0637 \u0628\u0639\u062f\u06cc \u0645\u0642\u062f\u0627\u0631\u0634 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u06cc\u0646\u0648 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val selectedUser =\n\n\u00a0\u00a0\u00a0 user ?: return@Column<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> selectedUser <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 user ?: <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\">@Column<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc<strong> <\/strong><strong>\u0627\u06af\u0631 <\/strong><strong>user <\/strong><strong>\u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u0634\u062a\u060c \u062f\u0627\u062e\u0644 <\/strong><strong>selectedUser <\/strong><strong>\u0642\u0631\u0627\u0631\u0634 \u0628\u062f\u0647<\/strong><strong>.<\/strong> \u0627\u0645\u0627 \u0627\u06af\u0631 \u0628\u0647 \u0647\u0631 \u062f\u0644\u06cc\u0644\u06cc user \u0646\u0627\u0644 \u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">return@Column<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06cc\u0639\u0646\u06cc \u00ab\u062f\u06cc\u06af\u0647 \u0627\u062f\u0627\u0645\u0647\u200c\u06cc \u06a9\u062f\u0647\u0627\u06cc \u062f\u0627\u062e\u0644 Column \u0631\u0648 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646.\u00bb<\/strong> \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 Avatar(&#8230;) Text(&#8230;) Text(&#8230;) \u0627\u0635\u0644\u0627\u064b \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f7<br>\u0627\u062a\u0635\u0627\u0644 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0647 API \u0648 \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 MVVM<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0627 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0631\u0627 \u0637\u06cc \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0627\u0648\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0646\u0648\u0634\u062a\u06cc\u0645. \u0628\u0639\u062f \u0641\u0627\u06cc\u0644 JSON \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647 \u0633\u0627\u062e\u062a\u06cc\u0645. \u0628\u0639\u062f \u06cc\u06a9 API \u0633\u0627\u062f\u0647 \u0628\u0627 PHP \u0633\u0627\u062e\u062a\u06cc\u0645 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u0645\u0627<strong> \u0647\u0646\u0648\u0632 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0645\u0647\u0645 \u062f\u0627\u0631\u06cc\u0645. \u0627\u06af\u0631 \u0627\u0644\u0627\u0646 \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647 Compose \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a API \u0628\u0632\u0646\u06cc\u0645\u060c \u067e\u0631\u0648\u0698\u0647 \u062e\u06cc\u0644\u06cc \u0632\u0648\u062f \u0634\u0644\u0648\u063a \u0645\u06cc\u200c\u0634\u0648\u062f.<\/strong> \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserScreen(){\n\n    \/\/ \u062f\u0631\u062e\u0648\u0627\u0633\u062a API\n\n    \/\/ \u062a\u0628\u062f\u06cc\u0644 JSON\n\n    \/\/ \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\n\n    \/\/ \u0646\u0645\u0627\u06cc\u0634 UI\n    \n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\">\/\/ \u062f\u0631\u062e\u0648\u0627\u0633\u062a API<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\">\/\/ \u062a\u0628\u062f\u06cc\u0644 JSON<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\">\/\/ \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\">\/\/ \u0646\u0645\u0627\u06cc\u0634 UI<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0648\u0686\u06a9 \u0634\u0627\u06cc\u062f \u062c\u0648\u0627\u0628 \u0628\u062f\u0647\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0628\u0632\u0631\u06af \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u0639\u0645\u0627\u0631\u06cc MVVM \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 \u0627\u0635\u0644\u06cc \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06cc\u06a9 \u0633\u0627\u0644 \u0628\u0639\u062f \u067e\u0631\u0648\u0698\u0647 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646 \u0628\u0632\u0631\u06af \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0635\u0641\u062d\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 API<\/li>\n\n\n\n<li>\u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627<\/li>\n\n\n\n<li>\u0646\u0645\u0627\u06cc\u0634 Loading<\/li>\n\n\n\n<li>\u0646\u0645\u0627\u06cc\u0634 Error<\/li>\n\n\n\n<li>\u062a\u063a\u06cc\u06cc\u0631 UI<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0628\u0627 \u0647\u0645 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f. \u0646\u062a\u06cc\u062c\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0632\u0631\u06af<\/li>\n\n\n\n<li>1000 \u062e\u0637 \u06a9\u062f<\/li>\n\n\n\n<li>\u062a\u063a\u06cc\u06cc\u0631 \u0633\u062e\u062a<\/li>\n\n\n\n<li>\u062a\u0633\u062a \u0633\u062e\u062a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">MVVM \u0645\u06cc\u200c\u0622\u06cc\u062f \u062a\u0627 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a\u200c\u0647\u0627 \u0631\u0627 \u062c\u062f\u0627 \u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MVVM \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MVVM \u0645\u062e\u0641\u0641:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Model<br>View<br>ViewModel<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a.<strong> \u0627\u06cc\u062f\u0647 \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 UI \u0646\u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u06a9\u062c\u0627 \u0645\u06cc\u200c\u0622\u06cc\u0646\u062f.<\/strong> \u06cc\u0639\u0646\u06cc Compose \u0646\u0628\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API \u0686\u06cc\u0633\u062a<\/li>\n\n\n\n<li>Retrofit \u0686\u06cc\u0633\u062a<\/li>\n\n\n\n<li>Database \u0686\u06cc\u0633\u062a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>UI \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0628\u06af\u0648\u06cc\u062f \u0645\u0646 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose UI<br>\u2193<br>ViewModel<br>\u2193<br>Repository<br>\u2193<br>API<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">View \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Compose \u0647\u0645\u0627\u0646 UI \u0645\u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserScreen(){\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>View \u0641\u0642\u0637 \u0645\u0633\u0626\u0648\u0644 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0633\u062a.<\/strong> \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0644\u06cc\u0633\u062a<\/li>\n\n\n\n<li>\u0646\u0645\u0627\u06cc\u0634 Loading<\/li>\n\n\n\n<li><strong>\u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0648\u0644\u06cc \u0646\u0628\u0627\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062e\u0648\u062f\u0634 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">ViewModel \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0631\u0627\u0628\u0637 \u0628\u06cc\u0646 UI \u0648 \u0645\u0646\u0637\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc UI \u0628\u0647 ViewModel \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u062f\u0647. ViewModel \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0632 Repository \u0628\u062e\u0648\u0627\u0646\u062f<\/li>\n\n\n\n<li>Loading \u0646\u0634\u0627\u0646 \u0628\u062f\u0647\u062f<\/li>\n\n\n\n<li>\u062e\u0637\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserViewModel : ViewModel(){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserViewModel<\/span><span style=\"color: #24292E\"> : <\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Repository \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Repository \u0645\u062f\u06cc\u0631 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b \u0627\u0645\u0631\u0648\u0632:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0641\u0631\u062f\u0627:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Room Database<br>+<br>API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ViewModel \u0647\u06cc\u0686 \u0686\u06cc\u0632\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u0641\u0647\u0645\u062f.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0645\u0631\u062a\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n\u251c\u2500\u2500 data\n\n\u2502    \u251c\u2500\u2500 api\n\n\u2502    \u2502    \u2514\u2500\u2500 UserApi.kt\n\n\u2502    \u2502\n\n\u2502    \u2514\u2500\u2500 repository\n\n\u2502         \u2514\u2500\u2500 UserRepositoryImpl.kt\n\n\n\u251c\u2500\u2500 domain\n\n\u2502    \u251c\u2500\u2500 model\n\n\u2502    \u2502    \u2514\u2500\u2500 User.kt\n\n\u2502    \u2502\n\n\u2502    \u2514\u2500\u2500 repository\n\n\u2502         \u2514\u2500\u2500 UserRepository.kt\n\n\n\u2514\u2500\u2500 presentation\n\n     \u251c\u2500\u2500 user\n\n     \u2502    \u251c\u2500\u2500 UserScreen.kt\n\n     \u2502    \u2514\u2500\u2500 UserViewModel.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0644\u0627\u06cc\u0647 Domain<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Domain \u0642\u0644\u0628 \u0645\u0646\u0637\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646\u062c\u0627 \u0646\u0628\u0627\u06cc\u062f \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 Retrofit \u06cc\u0627 Android \u0628\u0627\u0634\u062f. \u0645\u062b\u0644\u0627\u064b \u0645\u062f\u0644 User:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class User(\n\n    val id:Int,\n\n    val name:String,\n\n    val job:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> job:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Repository Interface<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Domain:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface UserRepository {\n\n    suspend fun getUsers():\n\n    List&lt;User>\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0642\u0637 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0647\u0631 \u06a9\u0633\u06cc Repository \u0628\u0627\u0634\u062f \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u062f\u0647\u062f. \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0686\u0637\u0648\u0631.\u061f\u061f<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0631 Data:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserRepositoryImpl(\n\n    private val api:UserApi\n\n):UserRepository{\n\n    override suspend fun getUsers():\n\n    List&lt;User>{\n\n        return api.getUsers()\n\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api:<\/span><span style=\"color: #6F42C1\">UserApi<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 Domain \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0645\u0646 User \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645. Data \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0628\u0627\u0634\u0647\u060c \u0645\u0646 \u0627\u0632 API \u0645\u06cc\u200c\u06af\u06cc\u0631\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a API Interface<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0644\u0627\u064b \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface UserApi {\n\n    suspend fun getUsers():\n    List&lt;User>\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserApi<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u0627\u064b Retrofit \u0622\u0646 \u0631\u0627 \u0648\u0627\u0642\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a UI State<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u062f\u06cc\u06af\u0631 \u062f\u0627\u0631\u06cc\u0645. \u0648\u0642\u062a\u06cc API \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u200c\u0632\u0646\u062f \u0633\u0647 \u062d\u0627\u0644\u062a \u062f\u0627\u0631\u06cc\u0645.<br>\u062d\u0627\u0644\u062a \u0627\u0648\u0644\u060c \u062f\u0631 \u062d\u0627\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Loading<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u062f\u0648\u0645\u060c \u0645\u0648\u0641\u0642:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Users<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u0633\u0648\u0645\u060c \u062e\u0637\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Error<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u06cc\u06a9 State \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">UserUiState<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class UserUiState {\n\n    object Loading : UserUiState()\n\n    data class Success(\n\n        val users:List&lt;User>\n\n    ) : UserUiState()\n\n\n    data class Error(\n\n        val message:String\n\n    ) : UserUiState()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">sealed<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserUiState<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Loading<\/span><span style=\"color: #24292E\"> : <\/span><span style=\"color: #6F42C1\">UserUiState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users:<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ) : <\/span><span style=\"color: #6F42C1\">UserUiState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ) : <\/span><span style=\"color: #6F42C1\">UserUiState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0648\u0636\u0639\u06cc\u062a \u0635\u0641\u062d\u0647 \u0645\u0634\u062e\u0635 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a ViewModel<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserViewModel(\n\n    private val repository: UserRepository\n\n):ViewModel(){\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository: <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel Repository \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">State \u062f\u0627\u062e\u0644 ViewModel<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val _state =\nMutableStateFlow&lt;UserUiState>(\n\n    UserUiState.Loading\n\n)\n\n\nval state =\n_state.asStateFlow()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> _state <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">MutableStateFlow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">UserUiState<\/span><span style=\"color: #24292E\">&gt;(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    UserUiState.Loading<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> state <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #6F42C1\">asStateFlow<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u0648\u0636\u0639\u06cc\u062a \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 UI \u0622\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0631\u0641\u062a\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ViewModel:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun loadUsers(){\n\n\n    viewModelScope.launch {\n\n\n        try {\n\n\n            _state.value =\n            UserUiState.Loading\n\n\n\n            val users =\n            repository.getUsers()\n\n\n\n            _state.value =\n            UserUiState.Success(\n                users\n            )\n\n\n        }\n\n        catch(e:Exception){\n\n\n            _state.value =\n            UserUiState.Error(\n                e.message ?: \"Error\"\n            )\n\n        }\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">loadUsers<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">try<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            UserUiState.Loading<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            repository.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            UserUiState.<\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                users<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            UserUiState.<\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                e.message ?: <\/span><span style=\"color: #032F62\">&quot;Error&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>Repository<br>\u2193<br>API<br>\u2193<br>Users<br>\u2193<br>State Update<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u062a\u0635\u0627\u0644 Compose \u0628\u0647 ViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UI \u0641\u0642\u0637 State \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u062f.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun UserScreen(\n\n    viewModel:UserViewModel\n\n){\n\n\n    val state by\n    viewModel.state.collectAsState()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserScreen<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    viewModel:<\/span><span style=\"color: #6F42C1\">UserViewModel<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> state <\/span><span style=\"color: #D73A49\">by<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    viewModel.state.<\/span><span style=\"color: #6F42C1\">collectAsState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc\u0634 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when(state){\n\n    is UserUiState.Loading -> {\n\n        CircularProgressIndicator()\n\n    }\n\n\n    is UserUiState.Success -> {\n\n        LazyColumn{\n\n        }\n    }\n\n\n    is UserUiState.Error -> {\n\n\n        Text(\n            \"Error\"\n        )\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(state){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UserUiState.Loading <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">CircularProgressIndicator<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UserUiState.Success <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">LazyColumn<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UserUiState.Error <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #032F62\">&quot;Error&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UI \u06a9\u0627\u0645\u0644\u0627\u064b \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 State \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\" dir=\"ltr\">UserScreen<br>\u2193<br>ViewModel.loadUsers()<br>\u2193<br>Repository.getUsers()<br>\u2193<br>API Request<br>\u2193<br>JSON Response<br>\u2193<br>Convert User<br>\u2193<br>Update State<br>\u2193<br>Compose Recompose<br>\u2193<br>Show List<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u0628\u0647\u062a\u0631 \u0627\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0641\u0631\u062f\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0627\u0632 Room \u0628\u062e\u0648\u0627\u0646\u06cc. \u062f\u0631 \u062d\u0627\u0644\u062a \u0628\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">UserScreen<br>\u2193<br>API<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f UI \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc. \u0627\u0645\u0627 \u062f\u0631 MVVM:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">UserScreen<br>\u2193<br>ViewModel<br>\u2193<br>Repository<br>\u2193<br>Room<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 Repository \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0642\u06cc\u0645\u200c\u0628\u0627\u0646 \u0642\u06cc\u0645\u062a\u200c\u0647\u0627 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u0645\u0631\u0648\u0632:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Server<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u062f\u0627:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Room Cache<br>+<br>Server<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0648 Compose \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0642\u062f\u0631\u062a \u0645\u0639\u0645\u0627\u0631\u06cc \u062f\u0631\u0633\u062a \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">UserRepository Interface<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Repository \u0631\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u06cc\u0647 \u06a9\u0644\u0627\u0633 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0628\u0647 \u0635\u0648\u0631\u062a Interface \u0646\u0648\u0634\u062a\u06cc\u0645. Interface \u0641\u0642\u0637 \u06cc\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u0639\u0646\u06cc \u0645\u06cc\u06af\u0647 \u0647\u0631 \u06a9\u0644\u0627\u0633\u06cc \u06a9\u0647 Repository \u0628\u0627\u0634\u0647\u060c \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0648\u0644\u06cc \u0627\u0635\u0644\u0627\u064b \u0645\u0634\u062e\u0635 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0631\u0627\u0631\u0647 \u0627\u0632 \u06a9\u062c\u0627 \u0628\u06cc\u0627\u0646. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0628\u0639\u062f\u0627\u064b \u0627\u06af\u0631 \u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0631\u0648\u0634 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0639\u0648\u0636 \u06a9\u0646\u06cc\u0645\u060c \u0644\u0627\u0632\u0645 \u0646\u0628\u0627\u0634\u0647 ViewModel \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">UserRepositoryImpl<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0647\u0645\u0648\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f UserRepository \u0631\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u0639\u0646\u06cc \u062d\u0627\u0644\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0642\u06cc\u0642\u0627\u064b \u0627\u0632 \u06a9\u062c\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u0634\u0646. \u0627\u0644\u0627\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 API \u0645\u06cc\u0627\u0646\u060c \u0648\u0644\u06cc \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0628\u062e\u0648\u0627\u06cc\u0645 \u0627\u0632 Room \u06cc\u0627 \u0647\u0631 \u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0647\u200c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">UserUiState<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0646\u062f \u062a\u0627 \u0645\u062a\u063a\u06cc\u0631 \u062c\u062f\u0627 \u0645\u062b\u0644 isLoading\u060c users \u0648 errorMessage \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0647\u0645\u0647 \u0648\u0636\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0641\u0642\u0637 \u062f\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0647 \u062d\u0627\u0644\u062a \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647\u061b \u06cc\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u0647\u060c \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647\u060c \u06cc\u0627 \u062e\u0637\u0627 \u0631\u062e \u062f\u0627\u062f\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">MutableStateFlow<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">MutableStateFlow \u0634\u0628\u06cc\u0647 mutableStateOf \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631\u0627\u06cc ViewModel \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0647\u0631 \u0628\u0627\u0631 \u0645\u0642\u062f\u0627\u0631\u0634 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647\u060c \u062a\u0645\u0627\u0645 \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0646 \u0627\u0648\u0646 \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u060c \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0634 \u0628\u0627\u062e\u0628\u0631 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">StateFlow<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u0645 \u0635\u0641\u062d\u0647 \u0628\u062a\u0648\u0646\u0647 \u0645\u0642\u062f\u0627\u0631 State \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647. \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0646\u0647 \u0627\u0648\u0646 \u0631\u0648 \u0628\u062e\u0648\u0646\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0633\u062e\u0647\u200c\u06cc \u0641\u0642\u0637\u200c\u062e\u0648\u0627\u0646\u062f\u0646\u06cc StateFlow \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 UI \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u06cc\u0645 \u0648 \u062e\u0648\u062f MutableStateFlow \u0631\u0648 \u062e\u0635\u0648\u0635\u06cc \u0646\u06af\u0647 \u0645\u06cc\u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">viewModelScope<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b \u062f\u0627\u062e\u0644 LaunchedEffect \u062f\u0631\u062e\u0648\u0627\u0633\u062a API \u0631\u0648 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645. \u0627\u0645\u0627 \u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0627\u062e\u0644 ViewModel \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647. viewModelScope \u06cc\u06a9 CoroutineScope \u0645\u062e\u0635\u0648\u0635 ViewModel \u0647\u0633\u062a \u06a9\u0647 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 ViewModel \u0632\u0646\u062f\u0647 \u0628\u0627\u0634\u0647\u060c Coroutine\u0647\u0627 \u0647\u0645 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0646 \u0648 \u0648\u0642\u062a\u06cc ViewModel \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u0647\u060c \u062e\u0648\u062f\u0634 \u0647\u0645\u0647 \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">init<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 init \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631\u06cc \u06a9\u0647 ViewModel \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647. \u0645\u0627 \u0647\u0645 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0641\u0631\u0635\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u06cc\u06af\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0627\u0632 \u062f\u0627\u062e\u0644 Compose \u062e\u0648\u062f\u0645\u0648\u0646 loadUsers() \u0631\u0648 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">collectAsStateWithLifecycle<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b \u0627\u0632 remember \u0648 mutableStateOf \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u062d\u0627\u0644\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 ViewModel \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646. collectAsStateWithLifecycle() \u0645\u0642\u062f\u0627\u0631 StateFlow \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 \u06cc\u06a9 State \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 Compose \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 State \u062f\u0627\u062e\u0644 ViewModel \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647\u060c Compose \u0647\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 \u0635\u0641\u062d\u0647 \u0631\u0648 \u0631\u0633\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0686\u0648\u0646 Lifecycle \u0631\u0648 \u0647\u0645 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647\u060c \u0648\u0642\u062a\u06cc \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0647 \u0641\u0639\u0627\u0644 \u0646\u0628\u0627\u0634\u0647\u060c \u0645\u0634\u0627\u0647\u062f\u0647 State \u0647\u0645 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u0634\u0647 \u0648 \u0645\u0646\u0627\u0628\u0639 \u0628\u06cc\u0647\u0648\u062f\u0647 \u0645\u0635\u0631\u0641 \u0646\u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">ProfileViewModelFactory<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0645\u0627 \u0633\u0627\u0632\u0646\u062f\u0647\u200c\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc \u0646\u062f\u0627\u0631\u0647 \u0648 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646 \u0628\u0647 UserRepository \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0647. \u0627\u0645\u0627 \u062a\u0627\u0628\u0639 viewModel \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 ViewModel\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0628\u0633\u0627\u0632\u0647 \u06a9\u0647 \u0633\u0627\u0632\u0646\u062f\u0647\u200c\u06cc \u062e\u0627\u0644\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646. \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0627\u0632 ViewModelFactory \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0633\u0627\u062e\u062a ViewModel\u060c Repository \u0631\u0648 \u0628\u0647\u0634 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">viewModel<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0627 remember \u0627\u0632 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0646\u0645\u0648\u0646\u0647 \u0645\u06cc\u200c\u0633\u0627\u062e\u062a\u06cc\u0645\u060c \u0627\u0645\u0627 ViewModel \u0628\u0627\u06cc\u062f \u062a\u0648\u0633\u0637 \u062e\u0648\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0634\u0647. \u062a\u0627\u0628\u0639 viewModel \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b ViewModel \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0647\u0645\u0648\u0646 \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 \u0627\u06af\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647\u200c\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">suspend<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0642\u0628\u0644 \u0627\u0632 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u06a9\u0644\u0645\u0647 suspend \u0631\u0648 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0645\u0645\u06a9\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0646\u0634 \u06cc\u06a9\u0645 \u0632\u0645\u0627\u0646 \u0628\u0628\u0631\u0647\u061b \u0645\u062b\u0644\u0627\u064b \u0628\u062e\u0648\u0627\u062f \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06af\u06cc\u0631\u0647 \u06cc\u0627 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0686\u06cc\u0632\u06cc \u0628\u062e\u0648\u0646\u0647. \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0645\u0648\u0642\u0639 \u0627\u0646\u062a\u0638\u0627\u0631\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u0642\u0641\u0644 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647 \u0628\u0642\u06cc\u0647 \u06a9\u0627\u0631\u0647\u0627 \u0645\u062b\u0644 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0627 UI \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646. \u0627\u0644\u0628\u062a\u0647 \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc suspend \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 \u06cc\u06a9 Coroutine \u06cc\u0627 \u06cc\u06a9 \u062a\u0627\u0628\u0639 suspend \u062f\u06cc\u06af\u0647 \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">withContext(Dispatchers.IO)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0646\u0628\u0627\u06cc\u062f \u0631\u0648\u06cc Thread \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0631\u0627 \u0628\u0634\u0646\u060c \u0686\u0648\u0646 \u0647\u0645\u0648\u0646 Thread \u0645\u0633\u0626\u0648\u0644 \u0646\u0645\u0627\u06cc\u0634 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc\u0647. \u0627\u06af\u0631 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0631\u0648\u06cc \u0627\u0648\u0646 \u0627\u062c\u0631\u0627 \u0628\u0634\u0647\u060c \u0645\u0645\u06a9\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f \u0644\u062d\u0638\u0647 \u06af\u06cc\u0631 \u06a9\u0646\u0647 \u06cc\u0627 \u062d\u062a\u06cc \u062e\u0637\u0627 \u0628\u062f\u0647. Dispatchers.IO \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u0628\u0647 Thread\u0647\u0627\u06cc \u0645\u062e\u0635\u0648\u0635 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0631\u0648\u062f\u06cc \u0648 \u062e\u0631\u0648\u062c\u06cc \u0645\u062b\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u060c \u0641\u0627\u06cc\u0644 \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u06cc\u200c\u0633\u067e\u0627\u0631\u0647 \u062a\u0627 UI \u0647\u0645\u06cc\u0634\u0647 \u0631\u0648\u0627\u0646 \u0628\u0627\u0642\u06cc \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">toUser<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u0627\u0632 API \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0647\u0645\u06cc\u0634\u0647 \u0647\u0645\u0648\u0646 \u0634\u06a9\u0644\u06cc \u0646\u06cc\u0633\u062a\u0646 \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u0634\u0648\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0628\u0647 \u0645\u062f\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062a\u0627\u0628\u0639 toUser \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647 \u0648 \u06cc\u06a9 ApiUser \u0631\u0648 \u0628\u0647 \u06cc\u06a9 User \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0633\u0627\u062e\u062a\u0627\u0631 API \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u060c \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u0642\u0633\u0645\u062a \u0631\u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Extension Function<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 toUser \u06cc\u06a9 Extension Function \u0647\u0633\u062a. Extension Function \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647 \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0644\u0627\u0633 \u0627\u0635\u0644\u06cc \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645\u060c \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u062c\u062f\u06cc\u062f \u0628\u0647\u0634 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 apiUser.toUser\u061b \u0627\u0646\u06af\u0627\u0631 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0632 \u0627\u0648\u0644 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u06a9\u0644\u0627\u0633 ApiUser \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">asStateFlow<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ViewModel \u0627\u0632 MutableStateFlow \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0686\u0648\u0646 \u0628\u0627\u06cc\u062f \u0645\u0642\u062f\u0627\u0631 State \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645. \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u0645 \u0635\u0641\u062d\u0647 \u0647\u0645 \u0628\u062a\u0648\u0646\u0647 \u0645\u0642\u062f\u0627\u0631\u0634 \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0628\u0627 asStateFlow \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0641\u0642\u0637\u200c\u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0627\u0632 \u0647\u0645\u0648\u0646 State \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 UI \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u063a\u06cc\u06cc\u0631 \u0645\u0642\u062f\u0627\u0631 State<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0648\u0642\u062a \u0645\u0642\u062f\u0627\u0631 StateFlow \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645\u060c Compose \u062e\u0648\u062f\u0634 \u0645\u062a\u0648\u062c\u0647 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u0634\u0647 \u0648 \u0635\u0641\u062d\u0647 \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0633\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u0639\u0646\u06cc \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0647 UI \u0628\u06af\u06cc\u0645 Loading \u06cc\u0627 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647. \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc\u0647 State \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645\u061b \u0628\u0642\u06cc\u0647 \u06a9\u0627\u0631\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">try \u0648 catch<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0647\u0645\u06cc\u0634\u0647 \u0645\u0648\u0641\u0642 \u0646\u06cc\u0633\u062a. \u0645\u0645\u06a9\u0646\u0647 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0628\u0627\u0634\u0647 \u06cc\u0627 \u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e \u0646\u062f\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u06a9\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 try \u0642\u0631\u0627\u0631 \u0645\u06cc\u062f\u06cc\u0645. \u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u067e\u06cc\u0634 \u0628\u0631\u0647\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0646. \u0627\u0645\u0627 \u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u0628\u062f\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0631\u062f \u0628\u062e\u0634 catch \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0647 \u062c\u0627\u06cc \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">isAssignableFrom<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ViewModelFactory \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0633\u0627\u062e\u062a \u06a9\u062f\u0648\u0645 ViewModel \u0631\u0648 \u062f\u0627\u062f\u0647. \u0645\u062a\u062f isAssignableFrom \u0647\u0645\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0627\u06af\u0631 ViewModel \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0627\u0632 \u0646\u0648\u0639 ProfileViewModel \u0628\u0627\u0634\u0647\u060c Factory \u0627\u0648\u0646 \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647 \u0648 Repository \u0631\u0648 \u0647\u0645 \u0628\u0647\u0634 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">collectAsStateWithLifecycle<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u062f\u0627\u0631 state \u062f\u0627\u062e\u0644 ViewModel \u0627\u0632 \u0646\u0648\u0639 StateFlow \u0647\u0633\u062a\u060c \u0627\u0645\u0627 Compose \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 StateFlow \u06a9\u0627\u0631 \u06a9\u0646\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0632 collectAsStateWithLifecycle \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0642\u062f\u0627\u0631 StateFlow \u0628\u0647 \u06cc\u06a9 State \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 Compose \u062a\u0628\u062f\u06cc\u0644 \u0628\u0634\u0647. \u0627\u0632 \u0627\u06cc\u0646 \u0644\u062d\u0638\u0647 \u0628\u0647 \u0628\u0639\u062f\u060c \u0647\u0631 \u0648\u0642\u062a \u0645\u0642\u062f\u0627\u0631 state \u062f\u0627\u062e\u0644 ViewModel \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647\u060c Compose \u0647\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0635\u0641\u062d\u0647 \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0633\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0686\u0648\u0646 Lifecycle \u0631\u0648 \u0647\u0645 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647\u060c \u0648\u0642\u062a\u06cc \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0647 \u0641\u0639\u0627\u0644 \u0646\u0628\u0627\u0634\u0647\u060c \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc State \u0647\u0645 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u0634\u0647 \u0648 \u0645\u0646\u0627\u0628\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u06cc\u0647\u0648\u062f\u0647 \u0645\u0635\u0631\u0641 \u0646\u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0632 by \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 by \u0631\u0648 \u0646\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u06af\u0634\u062a\u06cc collectAsStateWithLifecycle \u062e\u0648\u062f\u0634 \u06cc\u06a9 \u0634\u06cc\u0621 \u0627\u0632 \u0646\u0648\u0639 State \u0647\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0642\u062f\u0627\u0631\u0634 \u0628\u0627\u06cc\u062f \u0647\u0631 \u0628\u0627\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 state.value \u0627\u0645\u0627 \u0648\u0642\u062a\u06cc \u0627\u0632 by \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u062e\u0648\u062f Kotlin \u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u062e\u0644 State \u0631\u0648 \u0628\u0631\u0627\u0645\u0648\u0646 \u0628\u0631\u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 \u062f\u06cc\u06af\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a .value \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0641\u0642\u0637 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 state.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u062f\u0627\u062e\u0644 when \u0646\u0648\u0634\u062a\u06cc\u0645 val currentState = state\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0627\u0633\u0645 currentState \u0646\u0633\u0627\u062e\u062a\u06cc\u0645 \u06a9\u0647 \u0628\u062e\u0648\u0627\u06cc\u0645 \u0627\u0632 state \u062c\u062f\u0627\u0634 \u06a9\u0646\u06cc\u0645. \u0641\u0642\u0637 \u0647\u0645\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 state \u0631\u0648 \u062f\u0627\u062e\u0644 when \u0628\u0627 \u06cc\u06a9 \u0627\u0633\u0645 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06af\u0631\u0641\u062a\u06cc\u0645. \u0641\u0627\u06cc\u062f\u0647\u200c\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0648\u0642\u062a\u06cc \u0648\u0627\u0631\u062f \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0632 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc when \u0645\u06cc\u200c\u0634\u06cc\u0645\u060c \u06a9\u0627\u062a\u0644\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u06cc\u200c\u0641\u0647\u0645\u0647 currentState \u0627\u0632 \u0686\u0647 \u0646\u0648\u0639\u06cc\u0647. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0648\u0627\u0631\u062f \u0628\u062e\u0634 Success \u0628\u0634\u06cc\u0645\u060c \u062f\u06cc\u06af\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0648\u0628\u0627\u0631\u0647 state \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0646\u0648\u0639 (Cast) \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 currentState \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>is DetailUiState.Success -> {\n\n\u00a0\u00a0\u00a0 Text(currentState.user.name)\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> DetailUiState.Success <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(currentState.user.name)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u062a\u0644\u06cc\u0646 \u062e\u0648\u062f\u0634 \u0645\u06cc\u200c\u0641\u0647\u0645\u0647 \u06a9\u0647 currentState \u0627\u0632 \u0646\u0648\u0639 DetailUiState.Success \u0647\u0633\u062a \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 user \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0631\u06cc\u0645. \u0627\u06af\u0631 \u0641\u0642\u0637 \u0645\u06cc\u200c\u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when (state) {<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\"> (state) {<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u062f\u0627\u062e\u0644 Success \u0645\u062c\u0628\u0648\u0631 \u0628\u0648\u062f\u06cc\u0645 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0632 \u062e\u0648\u062f state \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u06a9\u062f \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0634\u0644\u0648\u063a\u200c\u062a\u0631 \u0648 \u06a9\u0645\u062a\u0631 \u062e\u0648\u0627\u0646\u0627 \u0645\u06cc\u200c\u0634\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0627\u0632 sealed class \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647\u060c \u0635\u0641\u062d\u0647\u200c\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062f\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0686\u0646\u062f \u062d\u0627\u0644\u062a \u0645\u0634\u062e\u0635 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647\u061b \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u062d\u0627\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u0627\u0634\u0647\u060c \u06cc\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u06cc\u0627 \u0647\u0646\u06af\u0627\u0645 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06cc\u06a9 sealed class \u0628\u0647 \u0646\u0627\u0645 DetailUiState \u0633\u0627\u062e\u062a\u06cc\u0645 \u0648 \u0627\u06cc\u0646 \u0633\u0647 \u062d\u0627\u0644\u062a \u0631\u0627 \u062f\u0627\u062e\u0644 \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645. \u062f\u0631 \u0648\u0627\u0642\u0639 Loading\u060c Success \u0648 Error \u0647\u0645\u06af\u06cc \u0641\u0631\u0632\u0646\u062f\u0647\u0627\u06cc DetailUiState \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u062a\u063a\u06cc\u0631 state \u0647\u0645\u06cc\u0634\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0647 \u062d\u0627\u0644\u062a \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f\u0634 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0627\u0631\u062a\u0628\u0627\u0637 DetailUiState \u0628\u0627 when<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when (val currentState = state) {<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\"> (<\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> currentState <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> state) {<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u0632 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0641\u0639\u0644\u06cc state \u06a9\u062f\u0627\u0645\u200c\u06cc\u06a9 \u0627\u0632 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc DetailUiState \u0627\u0633\u062a. \u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 Loading \u0628\u0627\u0634\u062f\u060c \u0644\u0648\u062f\u06cc\u0646\u06af \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06af\u0631 \u0627\u0632 \u0646\u0648\u0639 Success \u0628\u0627\u0634\u062f\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u06af\u0631 \u0627\u0632 \u0646\u0648\u0639 Error \u0628\u0627\u0634\u062f\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0647\u0631 \u0634\u0627\u062e\u0647\u200c\u06cc when \u0645\u062e\u0635\u0648\u0635 \u06cc\u06a9\u06cc \u0627\u0632 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc DetailUiState \u0627\u0633\u062a \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u062f\u0631 \u0628\u0639\u0636\u06cc \u062d\u0627\u0644\u062a\u200c\u0647\u0627 is \u0646\u0648\u0634\u062a\u06cc\u0645 \u0648\u0644\u06cc \u0628\u0631\u0627\u06cc Loading \u0646\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Loading \u0628\u0627 \u06a9\u0644\u0645\u0647\u200c\u06cc object \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u061b \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0622\u0646 \u0631\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">DetailUiState.Loading<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 Success \u0648 Error \u0627\u0632 \u0646\u0648\u0639 data class \u0647\u0633\u062a\u0646\u062f \u0648 \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u062e\u0644 \u062e\u0648\u062f\u0634\u0627\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f\u061b \u0645\u062b\u0644\u0627\u064b \u06cc\u06a9 User \u06cc\u0627 \u06cc\u06a9 message \u062c\u062f\u06cc\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062f\u0631 when \u0627\u0632 \u06a9\u0644\u0645\u0647\u200c\u06cc is \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0641\u0642\u0637 \u0646\u0648\u0639 \u0622\u0646\u200c\u0647\u0627 \u0628\u0631\u0631\u0633\u06cc \u0634\u0648\u062f \u0648 \u0633\u067e\u0633 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u0634\u0627\u0646 \u0645\u0627\u0646\u0646\u062f currentState.user \u06cc\u0627 currentState.message \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f8<br>\u0645\u062f\u06cc\u0631\u06cc\u062a State \u062f\u0631 Compose<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u060c \u0645\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0631\u0648\u06cc \u0633\u0627\u062e\u062a \u0638\u0627\u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u0645\u0627 \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645 \u062f\u0631 Compose \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062f\u0631 \u062a\u0645\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 \u0622\u0646 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645: State.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Compose \u062a\u0645\u0627\u0645 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 State \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u06cc\u0639\u0646\u06cc UI \u062e\u0648\u062f\u0634 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u0646\u06af\u0647 \u0646\u0645\u06cc\u200c\u062f\u0627\u0631\u062f. \u0628\u0644\u06a9\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u062a\u0646 \u062f\u0627\u062e\u0644 \u06cc\u06a9 TextField<\/li>\n\n\n\n<li>\u0628\u0627\u0632 \u06cc\u0627 \u0628\u0633\u062a\u0647 \u0628\u0648\u062f\u0646 \u06cc\u06a9 \u0645\u0646\u0648<\/li>\n\n\n\n<li>\u0648\u0636\u0639\u06cc\u062a Loading<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0627\u0632 API<\/li>\n\n\n\n<li>\u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0646 \u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0627\u06cc\u0646\u200c\u0647\u0627 State \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0641\u0647\u0648\u0645 State \u062f\u0631 Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06cc\u06a9 \u0634\u0645\u0627\u0631\u0646\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645. \u0627\u0628\u062a\u062f\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Count = 0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Count = 1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u0642\u062f\u0627\u0631 State \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f\u060c Compose \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 UI \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0633\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<br>\u0627\u06cc\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f \u0631\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Recomposition\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0646\u0627\u0645\u06cc\u0645. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">State \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<br>\u2193<br>Compose \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f<br>\u2193<br>UI \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">remember<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0646\u0648\u0639 State \u062f\u0631 Compose\u060c <code>remember<\/code> \u0627\u0633\u062a. \u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0645\u062a\u0646 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u06cc\u0645 \u0648 \u0628\u0627 \u062f\u06a9\u0645\u0647 \u0645\u062e\u0641\u06cc \u06a9\u0646\u06cc\u0645. \u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun ShowTextExample(){\n\n    var visible =\n        remember {\n            mutableStateOf(true)\n        }\n\n\n    Column {\n\n        Button(\n\n            onClick = {\n\n                visible.value =\n                    !visible.value\n\n            }\n\n        ){\n\n            Text(\n                \"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a\"\n            )\n\n        }\n\n\n        if(visible.value){\n\n            Text(\n                \"\u0633\u0644\u0627\u0645 Compose\"\n            )\n\n        }\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ShowTextExample<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> visible <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">true<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                visible.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                    <\/span><span style=\"color: #D73A49\">!<\/span><span style=\"color: #24292E\">visible.<\/span><span style=\"color: #D73A49\">value<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #032F62\">&quot;\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\">(visible.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #032F62\">&quot;\u0633\u0644\u0627\u0645 Compose&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0627\u0641\u062a\u0627\u062f\u061f<br>\u0627\u0648\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>remember {\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 Recomposition \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0632 \u0627\u0648\u0644 \u0646\u0633\u0627\u0632. \u0686\u0648\u0646 Compose \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u062a\u0627\u0628\u0639 UI \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f. \u0627\u06af\u0631 \u0628\u062f\u0648\u0646 <code>remember<\/code> \u0645\u06cc\u200c\u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var visible =\n    mutableStateOf(true)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> visible <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">true<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0628\u0627\u0631 UI \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 <code>true<\/code> \u0645\u06cc\u200c\u0634\u062f. \u06cc\u0639\u0646\u06cc \u0647\u06cc\u0686 \u0648\u0642\u062a \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0627\u0642\u06cc \u0646\u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">mutableStateOf \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>remember<\/code> \u0641\u0642\u0637 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f. \u0627\u0645\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f Compose \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0627 \u0628\u0641\u0647\u0645\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>mutableStateOf()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var name =\n    mutableStateOf(\"Ali\")\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> name <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u06cc\u06a9 State \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0627\u0648\u0644\u06cc\u0647 \u0622\u0646 Ali \u0627\u0633\u062a. \u0648\u0642\u062a\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name.value = \"Reza\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0648\u062f\u060c Compose \u0645\u062a\u0648\u062c\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0628\u0627 by<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0631 Compose \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0631\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var username by remember {\n\n    mutableStateOf(\"\")\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> username <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0647 \u062c\u0627\u06cc username.value \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 username \u0648 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username = \"Ali\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 Syntax \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc: \u0641\u0631\u0645 \u0648\u0631\u0648\u062f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06cc\u06a9 \u0641\u0631\u0645 \u0633\u0627\u062f\u0647 Login \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u062f\u0648 State \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc<\/li>\n\n\n\n<li>\u0631\u0645\u0632 \u0639\u0628\u0648\u0631<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun LoginForm(){\n\n\n    var username by remember {\n\n        mutableStateOf(\"\")\n\n    }\n\n\n    var password by remember {\n\n        mutableStateOf(\"\")\n\n    }\n\n\n\n    Column {\n\n\n        TextField(\n\n            value = username,\n\n            onValueChange = {\n\n                username = it\n\n            }\n\n        )\n\n\n\n        TextField(\n\n            value = password,\n\n            onValueChange = {\n\n                password = it\n\n            }\n\n        )\n\n\n        Button(\n\n            onClick = {\n\n                println(username)\n\n            }\n\n        ){\n\n            Text(\n                \"Login\"\n            )\n\n        }\n\n\n    }\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginForm<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> username <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> password <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">TextField<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> username,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            onValueChange <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                username <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> it<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">TextField<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> password,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            onValueChange <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                password <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> it<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #6F42C1\">println<\/span><span style=\"color: #24292E\">(username)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        ){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">                <\/span><span style=\"color: #032F62\">&quot;Login&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u06cc\u067e \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">State \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username = \"A\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Compose \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 TextField \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 remember<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0645\u0647\u0645 \u0622\u06cc\u0627 <code>remember<\/code> \u0647\u0645\u06cc\u0634\u0647 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a\u061f \u0646\u0647. <code>remember<\/code> \u0641\u0642\u0637 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u0632\u0646\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 Composable \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0628\u0627\u0634\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0686\u0631\u062e\u0634 \u0635\u0641\u062d\u0647<\/li>\n\n\n\n<li>\u0628\u0633\u062a\u0647 \u0634\u062f\u0646 Activity<\/li>\n\n\n\n<li>\u062d\u0630\u0641 \u0634\u062f\u0646 Screen<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a State \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u0648\u062f. \u0628\u0631\u0627\u06cc State\u0647\u0627\u06cc \u0633\u0627\u062f\u0647 UI \u062e\u0648\u0628 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">State Hoisting \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0645\u0647\u0645 Compose \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc State \u0631\u0627 \u0627\u0632 \u062f\u0627\u062e\u0644 Composable \u0628\u06cc\u0631\u0648\u0646 \u0628\u06a9\u0634\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun Login(){\n\n    var username by remember {\n        mutableStateOf(\"\")\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Login<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> username <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u062a\u0628\u062f\u06cc\u0644 \u0634\u0648\u062f \u0628\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun Login(\n\n    username:String,\n\n    onUsernameChange:(String)->Unit\n\n){\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Login<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    username:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    onUsernameChange:(<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">)-&gt;<\/span><span style=\"color: #6F42C1\">Unit<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062e\u0648\u062f Login \u062f\u06cc\u06af\u0631 State \u0646\u06af\u0647 \u0646\u0645\u06cc\u200c\u062f\u0627\u0631\u062f. \u0641\u0642\u0637 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0686\u0631\u0627 State Hoisting \u0645\u0647\u0645 \u0627\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062a\u0633\u062a \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0634\u0648\u062f<\/li>\n\n\n\n<li>UI \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0634\u0648\u062f<\/li>\n\n\n\n<li>ViewModel \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0648\u0635\u0644 \u0634\u0648\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose<br>\u2193<br>ViewModel State<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u062a\u0635\u0627\u0644 \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">State \u062f\u0631 ViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b State \u062f\u0627\u062e\u0644 ViewModel \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class LoginViewModel : ViewModel(){\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginViewModel<\/span><span style=\"color: #24292E\"> : <\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0627\u0632 UI \u062c\u062f\u0627 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 StateFlow<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc State \u062f\u0631 ViewModel \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 StateFlow \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val _state =\n\nMutableStateFlow(\n    LoginState()\n)\n\n\nval state =\n\n_state.asStateFlow()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> _state <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">MutableStateFlow<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">LoginState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> state <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #6F42C1\">asStateFlow<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a LoginState<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u062c\u0627\u06cc \u0686\u0646\u062f State \u062c\u062f\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username\n\npassword\n\nloading\n\nerror\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9 State \u06a9\u0627\u0645\u0644 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class LoginState(\n\n    val username:String = \"\",\n\n    val password:String = \"\",\n\n    val loading:Boolean = false,\n\n    val error:String? = null\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginState<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> username:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> password:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> loading:<\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">false<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> error:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u06a9\u0644 \u0648\u0636\u0639\u06cc\u062a \u0635\u0641\u062d\u0647 \u06cc\u06a9 \u062c\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u063a\u06cc\u06cc\u0631 State \u062f\u0631 ViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u06cc\u067e \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun changeUsername(\n    value:String\n){\n\n    _state.value =\n        _state.value.copy(\n\n            username = value\n\n        )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">changeUsername<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">copy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            username <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">value<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 State \u0642\u0628\u0644\u06cc \u0631\u0627 \u06a9\u067e\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0641\u0642\u0637 username \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u062a\u0635\u0627\u0644 UI \u0628\u0647 StateFlow<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Compose:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val state by viewModel.state\n    .collectAsState()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> state <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> viewModel.state<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">collectAsState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0647\u0631 \u0648\u0642\u062a StateFlow \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u060c UI \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632 \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>TextField(\n\nvalue = state.username,\n\nonValueChange = {\n\n    viewModel.changeUsername(it)\n\n}\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">TextField<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> state.username,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onValueChange <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    viewModel.<\/span><span style=\"color: #6F42C1\">changeUsername<\/span><span style=\"color: #24292E\">(it)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631 \u062a\u0627\u06cc\u067e \u0645\u06cc\u200c\u06a9\u0646\u062f<br>\u2193<br>TextField<br>\u2193<br>ViewModel<br>\u2193<br>StateFlow \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<br>\u2193<br>collectAsState<br>\u2193<br>Compose \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u06a9\u0627\u0645\u0644\u200c\u062a\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class CounterViewModel : ViewModel(){\n\n\nprivate val _count =\n\nMutableStateFlow(0)\n\n\nval count =\n\n_count.asStateFlow()\n\n\n\nfun increase(){\n\n    _count.value++\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">CounterViewModel<\/span><span style=\"color: #24292E\"> : <\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> _count <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">MutableStateFlow<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">0<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> count <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_count.<\/span><span style=\"color: #6F42C1\">asStateFlow<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">increase<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    _count.<\/span><span style=\"color: #D73A49\">value++<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">UI:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun CounterScreen(\n\nviewModel:CounterViewModel\n\n){\n\n\nval count by\n\nviewModel.count.collectAsState()\n\n\n\nColumn {\n\n\nText(\n\ntext = \"$count\"\n\n)\n\n\nButton(\n\nonClick = {\n\nviewModel.increase()\n\n}\n\n){\n\nText(\n\"+\"\n)\n\n}\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">CounterScreen<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModel:<\/span><span style=\"color: #6F42C1\">CounterViewModel<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> count <\/span><span style=\"color: #D73A49\">by<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModel.count.<\/span><span style=\"color: #6F42C1\">collectAsState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">text <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;<\/span><span style=\"color: #005CC5\">$count<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onClick <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModel.<\/span><span style=\"color: #6F42C1\">increase<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;+&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a remember\u060c mutableStateOf \u0648 StateFlow<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">remember<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc State \u06a9\u0648\u0686\u06a9 \u062f\u0627\u062e\u0644 \u0647\u0645\u0627\u0646 UI. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0627\u0632 \u0648 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0645\u0646\u0648<\/li>\n\n\n\n<li>\u0646\u0645\u0627\u06cc\u0634 Dialog<\/li>\n\n\n\n<li>\u0627\u0646\u062a\u062e\u0627\u0628 Tab<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">mutableStateOf<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc State \u0633\u0627\u062f\u0647 \u062f\u0627\u062e\u0644 Composable. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u062a\u0646 \u0641\u0631\u0645<\/li>\n\n\n\n<li>\u0627\u0646\u062a\u062e\u0627\u0628 \u06af\u0632\u06cc\u0646\u0647<\/li>\n\n\n\n<li>Checkbox<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">StateFlow<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc State \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/li>\n\n\n\n<li>\u0646\u062a\u06cc\u062c\u0647 API<\/li>\n\n\n\n<li>\u0648\u0636\u0639\u06cc\u062a Login<\/li>\n\n\n\n<li>Loading<\/li>\n\n\n\n<li>Error<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 ViewModel.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646 \u0686\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u06cc\u0645\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0635\u0641\u062d\u0647 \u0642\u06cc\u0645\u062a\u200c\u0647\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ViewModel\n\nstate:\n\nloading = true\n\n\n\u2193\n\nAPI\n\n\n\u2193\n\nstate:\n\nprices = list\n\nloading = false\n\n\n\u2193\n\nCompose \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627 \u0635\u0641\u062d\u0647 Login:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username\n\npassword\n\nerror\n\ntoken\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u062f\u0627\u062e\u0644 State \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Recomposition \u062f\u0631 \u0639\u0645\u0644<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Compose \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc State \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0647\u0631 \u0648\u0642\u062a \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u06a9\u0646\u0647\u060c Compose \u0628\u062e\u0634\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 UI \u0631\u0648 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u0645\u0642\u062f\u0627\u0631 \u0634\u0645\u0627\u0631\u0646\u062f\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0647 Text \u062f\u0633\u062a\u0648\u0631 \u0628\u062f\u06cc\u0645 \u0639\u062f\u062f \u062c\u062f\u06cc\u062f \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647. \u0641\u0642\u0637 State \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 Compose \u0645\u062a\u0646 \u0634\u0645\u0627\u0631\u0646\u062f\u0647 \u0631\u0648 \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647\u061b \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f Recomposition \u0645\u06cc\u200c\u06af\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u062f\u0648 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0633\u0627\u062e\u062a\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0639\u0645\u062f\u0627\u064b \u062f\u0648 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u062a\u0641\u0627\u0648\u062a State \u0645\u062d\u0644\u06cc \u0648 State \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645. \u0641\u0631\u0645 \u0627\u0648\u0644 State \u0631\u0648 \u0628\u0627 remember \u062f\u0627\u062e\u0644 \u062e\u0648\u062f Composable \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u0634 \u0641\u0642\u0637 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0628\u062e\u0634 \u0627\u0632 UI \u0627\u0633\u062a. \u0641\u0631\u0645 \u062f\u0648\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 ViewModel \u0648 StateFlow \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u061b \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0686\u0646\u062f Composable \u0645\u062e\u062a\u0644\u0641 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646 \u0648 \u0628\u0627 \u0628\u0631\u06af\u0634\u062a\u0646 \u0627\u0632 \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u060c \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a ViewModel \u0628\u0627 ViewModelProvider<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 MainActivity \u0627\u0632 ViewModelProvider \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 ViewModel \u0631\u0648 \u0628\u0647 Activity \u0648\u0635\u0644 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val viewModel =\n\n\u00a0\u00a0\u00a0 ViewModelProvider(this)&#91;AppViewModel::class.java&#93;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> viewModel <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">ViewModelProvider<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">this<\/span><span style=\"color: #24292E\">)&#91;AppViewModel::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0645\u0647\u200c\u06cc this \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u0639\u0646\u06cc \u0645\u0627\u0644\u06a9 \u0627\u06cc\u0646 ViewModel \u0647\u0645\u06cc\u0646 Activity \u0627\u0633\u062a. ViewModelProvider \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0622\u06cc\u0627 \u0642\u0628\u0644\u0627\u064b \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u06cc\u0646 ViewModel \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u06cc\u0627 \u0646\u0647\u061b \u0627\u06af\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0647\u0645\u0627\u0646 \u0646\u0645\u0648\u0646\u0647 \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 \u0627\u06af\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 ViewModel \u0628\u0627 \u0647\u0631 Recomposition \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u0634\u0647 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0635\u0644\u06cc \u0635\u0641\u062d\u0647 \u062f\u0627\u062e\u0644\u0634 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0645\u0639\u0646\u06cc ::class.java<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppViewModel::class.java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0631\u06cc\u0645 \u062e\u0648\u062f \u06a9\u0644\u0627\u0633 ViewModel \u0631\u0648 \u0628\u0647 ViewModelProvider \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u062f\u0648\u0646\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0686\u0647 \u06a9\u0644\u0627\u0633\u06cc \u0646\u0645\u0648\u0646\u0647 \u0628\u0633\u0627\u0632\u0647. ::class \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0644\u0627\u0633 \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647 \u0648 .java \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 API \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 ViewModelProvider \u0628\u062a\u0648\u0646\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u06cc\u06a9 ViewModel \u0631\u0648 \u0628\u0647 \u0647\u0631 \u062f\u0648 \u0635\u0641\u062d\u0647 \u062f\u0627\u062f\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0648 \u0647\u0645 \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0645\u0634\u062a\u0631\u06a9 \u0627\u0632 ViewModel \u0648\u0635\u0644 \u0634\u062f\u0646. \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u06a9\u0647 \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u062f\u0631 StateFlow \u0627\u06cc\u062c\u0627\u062f \u0628\u06a9\u0646\u0647\u060c \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0647\u0645\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u0646\u0627\u0645 \u062e\u0648\u062f\u0634 \u0631\u0648 \u062f\u0631 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u062e\u0644 ViewModel \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc\u060c \u0647\u0645\u0627\u0646 \u0646\u0627\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0627\u06af\u0631 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0635\u0641\u062d\u0647 \u06cc\u06a9 ViewModel \u062c\u062f\u0627 \u0645\u06cc\u200c\u0633\u0627\u062e\u062a\u06cc\u0645\u060c \u0647\u0631 \u0635\u0641\u062d\u0647 State \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u200c\u0627\u06cc \u062f\u0627\u0634\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>collectAsState<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">state \u062f\u0627\u062e\u0644 ViewModel \u0627\u0632 \u0646\u0648\u0639 StateFlow \u0627\u0633\u062a\u060c \u0627\u0645\u0627 Compose \u0628\u0631\u0627\u06cc \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc UI \u0628\u0647 \u06cc\u06a9 State \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0647. collectAsState() \u0645\u0642\u062f\u0627\u0631 StateFlow \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 State \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 Compose \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val state by\n\u00a0\u00a0\u00a0 viewModel.state.collectAsState()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> state <\/span><span style=\"color: #D73A49\">by<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 viewModel.state.<\/span><span style=\"color: #6F42C1\">collectAsState<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646 \u0644\u062d\u0638\u0647 \u0647\u0631 \u0648\u0642\u062a \u0645\u0642\u062f\u0627\u0631 StateFlow \u062a\u063a\u06cc\u06cc\u0631 \u0628\u06a9\u0646\u0647\u060c Compose \u0647\u0645 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 state \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644\u06cc \u0646\u0633\u062e\u0647\u200c\u06cc collectAsStateWithLifecycle() \u0631\u0648 \u0647\u0645 \u062f\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u0628\u0627 \u062f\u0631\u0646\u0638\u0631\u06af\u0631\u0641\u062a\u0646 Lifecycle \u0635\u0641\u062d\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u062a\u063a\u06cc\u06cc\u0631 State \u0628\u0627 copy<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">State \u0627\u0635\u0644\u06cc \u0645\u0627 \u06cc\u06a9 data class \u0627\u0633\u062a \u0648 \u0686\u0646\u062f \u0645\u0642\u062f\u0627\u0631 \u0645\u062b\u0644 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u060c Loading \u0648 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0648 \u0628\u0627 \u0647\u0645 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u0627\u0632 copy() \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>_state.value =\n\n\u00a0\u00a0\u00a0 _state.value.copy(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 username = value\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">copy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 username <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">value<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">copy \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0627\u0632 State \u0642\u0628\u0644\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u0647\u060c \u062a\u0645\u0627\u0645 \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 \u0641\u0642\u0637 \u0628\u062e\u0634\u06cc \u0631\u0648 \u06a9\u0647 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647. \u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0639\u0648\u0636 \u0645\u06cc\u0634\u0647\u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0648 \u0634\u0645\u0627\u0631\u0646\u062f\u0647 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u06a9\u0644 \u0648\u0636\u0639\u06cc\u062a \u0635\u0641\u062d\u0647 \u06cc\u06a9\u200c\u062c\u0627 \u0648 \u0642\u0627\u0628\u0644 \u06a9\u0646\u062a\u0631\u0644 \u0628\u0627\u0642\u06cc \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0645\u0642\u062f\u0627\u0631 State \u0631\u0648 \u062f\u0627\u062e\u0644 currentState \u0631\u06cc\u062e\u062a\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u062a\u0627\u0628\u0639 \u0648\u0631\u0648\u062f \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val currentState =\n\n\u00a0\u00a0\u00a0 _state.value<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> currentState <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 _state.<\/span><span style=\"color: #D73A49\">value<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u0642\u062f\u0627\u0631 \u0641\u0639\u0644\u06cc State \u0631\u0648 \u06cc\u06a9 \u0628\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0627 \u0646\u0627\u0645 currentState \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645. \u0628\u0639\u062f \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u06a9\u062f \u0631\u0648 \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0647\u0645 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0686\u0646\u062f \u0628\u0627\u0631 \u067e\u0634\u062a \u0633\u0631\u0647\u0645 _state.value \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">isBlank<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u062e\u0627\u0644\u06cc \u0628\u0648\u062f\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0632 isBlank() \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">currentState.username.isBlank()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">isBlank \u0641\u0642\u0637 \u0645\u062a\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u062e\u0627\u0644\u06cc \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u0645\u062a\u0646\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u0627\u0632 \u0641\u0627\u0635\u0644\u0647 \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647 \u0631\u0648 \u0647\u0645 \u062e\u0627\u0644\u06cc \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0686\u0646\u062f \u0641\u0627\u0635\u0644\u0647 \u0648\u0627\u0631\u062f \u0628\u06a9\u0646\u0647 \u0648 \u0627\u0632 \u0645\u0631\u062d\u0644\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0639\u0628\u0648\u0631 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u062e\u0637\u0627 return \u0646\u0648\u0634\u062a\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0627\u0644\u06cc \u0628\u0627\u0634\u0647\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 State \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u0628\u0639\u062f return \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">return<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">return \u0627\u062c\u0631\u0627\u06cc \u062a\u0627\u0628\u0639 login \u0631\u0648 \u0647\u0645\u0627\u0646\u200c\u062c\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u062e\u0637 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0639\u062f \u0627\u0632 \u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627 \u0628\u0627\u0632 \u0647\u0645 \u0648\u0627\u0631\u062f \u0628\u062e\u0634 Loading \u0645\u06cc\u200c\u0634\u062f \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0631\u0648\u062f \u0631\u0648 \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0627\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 return \u062c\u0644\u0648\u06cc \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0628\u0639 \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>loading<\/strong><strong>\u060c <\/strong><strong>error <\/strong><strong>\u0648<\/strong><strong> message<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0645\u0627\u0645 \u0648\u0636\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645\u060c \u0641\u0642\u0637 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0633\u0647 \u0645\u0642\u062f\u0627\u0631 \u062f\u06cc\u06af\u0631 \u0647\u0645 \u062f\u0627\u062e\u0644 State \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. loading \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0631\u0648\u062f \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0627\u0633\u062a \u06cc\u0627 \u0646\u0647\u060c error \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 message \u0646\u062a\u06cc\u062c\u0647 \u0645\u0648\u0641\u0642\u06cc\u062a\u200c\u0622\u0645\u06cc\u0632 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u062f\u06a9\u0645\u0647 \u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u0647\u060c Loading \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647 \u06cc\u0627 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0648 \u0645\u0648\u0641\u0642\u06cc\u062a \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>delay <\/strong><strong>\u0628\u0631\u0627\u06cc \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0633\u0631\u0648\u0631<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0647\u0646\u0648\u0632 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0631\u0648 \u0628\u0647 API \u0648\u0627\u0642\u0639\u06cc \u0648\u0635\u0644 \u0646\u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0648\u0636\u0639\u06cc\u062a Loading \u0631\u0648 \u062f\u0631 \u0639\u0645\u0644 \u0628\u0628\u06cc\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0632:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">delay(1200)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u062c\u0631\u0627\u06cc Coroutine \u0631\u0648 \u062d\u062f\u0648\u062f \u06f1\u06f2\u06f0\u06f0 \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u0635\u0644\u0647 loading \u0628\u0631\u0627\u0628\u0631 true \u0627\u0633\u062a \u0648 \u0686\u0631\u062e\u0646\u062f\u0647\u200c\u06cc Loading \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u062a\u0623\u062e\u06cc\u0631 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a \u0648 \u0628\u0639\u062f\u0627\u064b API \u0648\u0627\u0642\u0639\u06cc \u062c\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0686\u0646\u062f \u0628\u0627\u0631 \u06a9\u0644\u06cc\u06a9 \u0628\u0627<\/strong><strong> enabled<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0631\u0648\u062f \u062f\u0631 \u062d\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0627\u0633\u062a\u060c \u062f\u06a9\u0645\u0647 \u0648\u0631\u0648\u062f \u0631\u0648 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">enabled = !loading<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0627\u0645\u062a ! \u0645\u0642\u062f\u0627\u0631 Boolean \u0631\u0648 \u0628\u0631\u0639\u06a9\u0633 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u0639\u0646\u06cc \u0648\u0642\u062a\u06cc loading \u0628\u0631\u0627\u0628\u0631 true \u0627\u0633\u062a\u060c \u0645\u0642\u062f\u0627\u0631 !loading \u0628\u0631\u0627\u0628\u0631 false \u0645\u06cc\u0634\u0647 \u0648 \u062f\u06a9\u0645\u0647 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062c\u0644\u0648\u06cc \u0686\u0646\u062f \u0628\u0627\u0631 \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0686\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0631\u0648\u062f \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. TextField\u0647\u0627 \u0648 \u062f\u06a9\u0645\u0647 \u0628\u0627\u0632\u06af\u0634\u062a \u0631\u0648 \u0647\u0645 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0647\u0646\u06af\u0627\u0645 Loading \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0645\u0627\u06cc\u0634 \u0634\u0631\u0637\u06cc<\/strong><strong> Loading <\/strong><strong>\u0648 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0635\u0641\u062d\u0647 \u0641\u0642\u0637 \u0632\u0645\u0627\u0646\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646 \u06a9\u0647 State \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (loading) {\n      CircularProgressIndicator()\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (loading) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">      <\/span><span style=\"color: #6F42C1\">CircularProgressIndicator<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc loading \u0628\u0631\u0627\u0628\u0631 true \u0628\u0627\u0634\u0647\u060c \u0686\u0631\u062e\u0646\u062f\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0648 \u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0647\u0645 \u0641\u0642\u0637 \u0632\u0645\u0627\u0646\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u0634\u0627\u0646 null \u0646\u0628\u0627\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 UI \u062b\u0627\u0628\u062a \u0646\u06cc\u0633\u062a \u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc State \u0634\u06a9\u0644 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>State Hoisting <\/strong><strong>\u062f\u0631<\/strong><strong> LoginForm<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">LoginForm \u062e\u0648\u062f\u0634 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u060c Loading \u06cc\u0627 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0631\u0648 \u0646\u06af\u0647 \u0646\u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u0628\u0647 \u0622\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">username: String<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">password: String<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">loading: Boolean<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0686\u06cc\u0632\u06cc \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u060c LoginForm \u0641\u0642\u0637 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u0648\u0627\u0628\u0639\u06cc \u0645\u062b\u0644 onUsernameChange \u0648 onLoginClick \u0628\u0647 \u0628\u062e\u0634 \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0647 \u0628\u06cc\u0631\u0648\u0646 \u06a9\u0634\u06cc\u062f\u0646 State \u0627\u0632 \u062f\u0627\u062e\u0644 Composable \u0648 \u0633\u067e\u0631\u062f\u0646 \u0641\u0642\u0637 \u0646\u0645\u0627\u06cc\u0634 \u0648 \u0627\u0639\u0644\u0627\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0647 \u0622\u0646\u060c State Hoisting \u0645\u06cc\u200c\u06af\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 LoginForm \u0628\u0647 ViewModel \u062e\u0627\u0635\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u0628\u0627\u0634\u0647 \u0648 \u062f\u0631 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u062a\u0627\u0628\u0639 \u0641\u0631\u0633\u062a\u0627\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>onUsernameChange: (String) -> Unit\nonLoginClick: () -> Unit<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">onUsernameChange: (<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">) -&gt; <\/span><span style=\"color: #6F42C1\">Unit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onLoginClick: () <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> Unit<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646 \u06a9\u0647 \u0627\u0632 Composable \u0628\u0627\u0644\u0627\u062a\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0646. LoginForm \u0646\u0645\u06cc\u200c\u062f\u0648\u0646\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062f\u0642\u06cc\u0642\u0627\u064b \u06a9\u062c\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0647 \u06cc\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc \u0648\u0631\u0648\u062f \u0686\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647. \u0641\u0642\u0637 \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647 \u06cc\u0627 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u062f\u06a9\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u0634\u062f\u0647. \u062a\u0635\u0645\u06cc\u0645 \u0627\u0635\u0644\u06cc \u062f\u0631 LoginScreen \u0648 ViewModel \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u06a9\u062f \u0641\u0631\u0645 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u063a\u06cc\u06cc\u0631 \u0635\u0641\u062d\u0647 \u0628\u0627<\/strong><strong> State<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc \u0633\u0627\u062f\u0647 \u0628\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0648 \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u0627\u0632 \u06cc\u06a9 Boolean \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var showLoginScreen by remember {\n\n\u00a0\u00a0\u00a0 mutableStateOf(false)\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> showLoginScreen <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">false<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u0642\u062f\u0627\u0631 false \u0628\u0627\u0634\u0647\u060c \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0648\u0642\u062a\u06cc \u0628\u0647 true \u062a\u063a\u06cc\u06cc\u0631 \u0628\u06a9\u0646\u0647\u060c \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0628\u0627 \u0632\u062f\u0646 \u062f\u06a9\u0645\u0647 \u0628\u0627\u0632\u06af\u0634\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 false \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0647. \u0627\u06cc\u0646 \u0631\u0648\u0634 Navigation \u0648\u0627\u0642\u0639\u06cc \u0646\u06cc\u0633\u062a\u061b \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u062d\u062a\u06cc \u0646\u0645\u0627\u06cc\u0634 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0631 \u0627\u0633\u0627\u0633 State \u06a9\u0646\u062a\u0631\u0644 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>PasswordVisualTransformation<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0633\u062a\u0642\u06cc\u0645 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u062f\u06cc\u062f\u0647 \u0646\u0634\u0647\u060c \u0627\u0632 PasswordVisualTransformation \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0638\u0627\u0647\u0631 \u0645\u062a\u0646 \u062f\u0627\u062e\u0644 TextField \u0631\u0648 \u0645\u062e\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0647\u200c\u062c\u0627\u06cc \u062d\u0631\u0648\u0641 \u0648\u0627\u0642\u0639\u06cc \u0639\u0644\u0627\u0645\u062a\u200c\u0647\u0627\u06cc \u0631\u0645\u0632 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0645\u0642\u062f\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0631\u0645\u0632 \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0627\u062e\u0644 State \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0641\u0642\u0637 \u0646\u062d\u0648\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>KeyboardOptions <\/strong><strong>\u0648<\/strong><strong> KeyboardType.Password<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>KeyboardOptions(\n\n\u00a0\u00a0\u00a0 keyboardType = KeyboardType.Password\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">KeyboardOptions<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 keyboardType <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> KeyboardType.Password<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 TextField \u0645\u062e\u0635\u0648\u0635 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0633\u062a. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u06a9\u06cc\u0628\u0648\u0631\u062f \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0631\u0645\u0632 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645 State \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u062f\u0647 \u0648 \u0641\u0642\u0637 \u0631\u0641\u062a\u0627\u0631 \u0635\u0641\u062d\u0647\u200c\u06a9\u0644\u06cc\u062f \u0631\u0648 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u0648\u0639 \u0648\u0631\u0648\u062f\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>verticalScroll <\/strong><strong>\u0648<\/strong><strong> rememberScrollState<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0645\u062d\u062a\u0648\u0627\u06cc \u0635\u0641\u062d\u0647 \u0645\u0645\u06a9\u0646\u0647 \u062f\u0631 \u06af\u0648\u0634\u06cc\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u06cc\u0627 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u06a9\u06cc\u0628\u0648\u0631\u062f \u06a9\u0627\u0645\u0644 \u062f\u06cc\u062f\u0647 \u0646\u0634\u0647\u060c Column \u0631\u0648 \u0642\u0627\u0628\u0644 \u0627\u0633\u06a9\u0631\u0648\u0644 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.verticalScroll(\n\n\u00a0\u00a0\u00a0 rememberScrollState()\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">verticalScroll<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">rememberScrollState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">verticalScroll \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0635\u0641\u062d\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0639\u0645\u0648\u062f\u06cc \u062d\u0631\u06a9\u062a \u0628\u06a9\u0646\u0647 \u0648 rememberScrollState \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0627\u0633\u06a9\u0631\u0648\u0644 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0647 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 \u0641\u0631\u0645 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0648 \u0628\u0627 \u0647\u0631 Recomposition \u0645\u0648\u0642\u0639\u06cc\u062a \u0627\u0633\u06a9\u0631\u0648\u0644 \u0628\u06cc\u200c\u062f\u0644\u06cc\u0644 \u0627\u0632 \u0627\u0648\u0644 \u0634\u0631\u0648\u0639 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>statusBarsPadding <\/strong><strong>\u0648<\/strong><strong> navigationBarsPadding<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627\u06cc Compose \u0645\u0645\u06a9\u0646\u0647 \u0632\u06cc\u0631 \u0646\u0648\u0627\u0631 \u0648\u0636\u0639\u06cc\u062a \u0628\u0627\u0644\u0627\u06cc \u06af\u0648\u0634\u06cc \u06cc\u0627 \u0646\u0648\u0627\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647. \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u062a\u0641\u0627\u0642 \u0627\u0632:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.statusBarsPadding()\n\n.navigationBarsPadding()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">statusBarsPadding<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">navigationBarsPadding<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u0648\u0644\u06cc \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0646\u0648\u0627\u0631 \u0628\u0627\u0644\u0627\u06cc \u06af\u0648\u0634\u06cc \u0641\u0627\u0635\u0644\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u062f\u0648\u0645\u06cc \u0627\u062c\u0627\u0632\u0647 \u0646\u0645\u06cc\u200c\u062f\u0647 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0632\u06cc\u0631 \u0646\u0648\u0627\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>CompositionLocalProvider <\/strong><strong>\u0648 \u0631\u0627\u0633\u062a\u200c\u0686\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 MainActivity \u0631\u0627\u0633\u062a\u200c\u0686\u06cc\u0646 \u0628\u0627\u0634\u0646\u060c \u062c\u0647\u062a \u0686\u06cc\u062f\u0645\u0627\u0646 \u0631\u0648 \u0627\u0632 \u0631\u06cc\u0634\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648\u06cc RTL \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CompositionLocalProvider(\n\u00a0\u00a0\u00a0 LocalLayoutDirection provides LayoutDirection.Rtl\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">CompositionLocalProvider<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 LocalLayoutDirection provides LayoutDirection.Rtl<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 Composable \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0633\u0627\u062e\u062a\u0647 \u0628\u0634\u0647\u060c \u062c\u0647\u062a \u0631\u0627\u0633\u062a\u200c\u0628\u0647\u200c\u0686\u067e \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0631 \u062a\u06a9\u200c\u062a\u06a9 \u0635\u0641\u062d\u0647\u200c\u0647\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 RTL \u0631\u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645 \u0648 \u0686\u06cc\u062f\u0645\u0627\u0646 \u0645\u062a\u0646\u200c\u0647\u0627\u060c Row\u0647\u0627 \u0648 \u0641\u0627\u0635\u0644\u0647\u200c\u0647\u0627\u06cc start \u0648 end \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0632\u0628\u0627\u0646 \u0641\u0627\u0631\u0633\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f9<br>Retrofit \u0648 \u0627\u0631\u062a\u0628\u0627\u0637 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0627 API<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0645\u0639\u0645\u0627\u0631\u06cc MVVM \u06a9\u0631\u062f\u06cc\u0645. \u0627\u0644\u0627\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627 \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose UI<br>\u2193<br>ViewModel<br>\u2193<br>Repository<br>\u2193<br>API<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u06cc\u06a9 \u0628\u062e\u0634 \u0647\u0646\u0648\u0632 \u06a9\u0627\u0645\u0644 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u0627 \u062f\u0627\u062e\u0644 Repository \u06af\u0641\u062a\u06cc\u0645 api.getUsers \u0648\u0644\u06cc \u0647\u0646\u0648\u0632 \u0648\u0627\u0642\u0639\u0627\u064b \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 API \u0686\u0637\u0648\u0631 \u0628\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0647 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0648\u0627\u0642\u0639\u06cc \u0628\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0648 \u0633\u0631\u0648\u0631 PHP \u06a9\u0647 \u0633\u0627\u062e\u062a\u06cc\u0645 \u0631\u0627 \u0628\u0627 <strong>Retrofit<\/strong> \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644 \u0645\u0627 \u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Android App<br>\u2193<br>Retrofit<br>\u2193<br>HTTP Request<br>\u2193<br>PHP API<br>\u2193<br>JSON Response<br>\u2193<br>Kotlin Object<br>\u2193<br>ViewModel<br>\u2193<br>Compose<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Retrofit \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 API \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0633\u0627\u062e\u062a Request<\/li>\n\n\n\n<li>\u0627\u0631\u0633\u0627\u0644 HTTP<\/li>\n\n\n\n<li>\u062f\u0631\u06cc\u0627\u0641\u062a Response<\/li>\n\n\n\n<li>\u062a\u0628\u062f\u06cc\u0644 JSON \u0628\u0647 Object Kotlin<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u062f\u0648\u0646 Retrofit \u0628\u0627\u06cc\u062f \u062e\u0648\u062f\u0645\u0627\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>URL \u0628\u0633\u0627\u0632\u06cc\u0645<\/li>\n\n\n\n<li>Connection \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>Response \u0628\u062e\u0648\u0627\u0646\u06cc\u0645<\/li>\n\n\n\n<li>JSON \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 Retrofit \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0635\u0628 Retrofit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 build.gradle \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n    \"com.squareup.retrofit2:retrofit:2.9.0\"\n)\n\n\nimplementation(\n    \"com.squareup.retrofit2:converter-gson:2.9.0\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;com.squareup.retrofit2:retrofit:2.9.0&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;com.squareup.retrofit2:converter-gson:2.9.0&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644\u06cc \u062e\u0648\u062f Retrofit \u0627\u0633\u062a. \u062f\u0648\u0645\u06cc \u062a\u0628\u062f\u06cc\u0644 JSON \u0628\u0647 Kotlin Object \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Converter Gson \u0686\u06cc\u0633\u062a\u061f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0633\u0631\u0648\u0631 \u0627\u06cc\u0646 JSON \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n {\n  \"id\":1,\n  \"name\":\"Ali\",\n  \"job\":\"Developer\"\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;job&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f \u0628\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>User(\n    id = 1,\n    name = \"Ali\",\n    job = \"Developer\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    job <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Developer&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0631\u0627 Gson \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">JSON<br>\u2193<br>Gson<br>\u2193<br>Kotlin Object<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Model<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0627\u0646 User \u0642\u0628\u0644\u06cc \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class User(\n\n    val id:Int,\n\n    val name:String,\n\n    val job:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> job:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 Retrofit \u0645\u06cc\u200c\u062f\u0627\u0646\u062f JSON \u0631\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Interface API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0641\u0627\u06cc\u0644 UserApi.kt \u0628\u0633\u0627\u0632 \u0648 \u062f\u0627\u062e\u0644 \u0622\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface UserApi {\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserApi<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0645\u0627 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0639\u0631\u06cc\u0641 \u0627\u0648\u0644\u06cc\u0646 Request<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a. \u0645\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u067e\u0633:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface UserApi {\n\n\n    @GET(\"users.php\")\n    suspend fun getUsers():\n\n    List&lt;User>\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserApi<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">@GET<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;users.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0686\u0647 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f\u061f \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@GET(\"users.php\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a GET \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0628\u0641\u0631\u0633\u062a \u0648 \u0627\u06cc\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>suspend fun getUsers()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 Coroutine \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 suspend\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0646\u0628\u0627\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0628\u06a9\u0647 \u0631\u0627 \u0631\u0648\u06cc Thread \u0627\u0635\u0644\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>button.setOnClickListener {\n\n    api.getUsers()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">button.<\/span><span style=\"color: #6F42C1\">setOnClickListener<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u06a9\u0646\u062f \u0628\u0627\u0634\u062f\u060c UI \u0642\u0641\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0647 \u062c\u0627\u06cc \u0622\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>viewModelScope.launch {\n\n    api.getUsers()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. <code>suspend<\/code> \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u062a\u0648\u0642\u0641 \u0634\u0648\u062f \u0648 \u0628\u0639\u062f\u0627\u064b \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f\u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 UI \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Retrofit Instance<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f Retrofit \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>object RetrofitInstance {\n\n\n    private val retrofit = Retrofit.Builder()\n\n        .baseUrl(\n            \"https:\/\/example.com\/\"\n        )\n\n        .addConverterFactory(\n            GsonConverterFactory.create()\n        )\n\n        .build()\n\n\n\n    val api =\n        retrofit.create(\n            UserApi::class.java\n        )\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">RetrofitInstance<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> retrofit <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> Retrofit.<\/span><span style=\"color: #6F42C1\">Builder<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">baseUrl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #032F62\">&quot;https:\/\/example.com\/&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">addConverterFactory<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            GsonConverterFactory.<\/span><span style=\"color: #6F42C1\">create<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">build<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        retrofit.<\/span><span style=\"color: #6F42C1\">create<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            UserApi::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u06a9\u062f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a Retrofit.Builder \u06cc\u0639\u0646\u06cc\u060c \u06cc\u06a9 Retrofit \u062c\u062f\u06cc\u062f \u0628\u0633\u0627\u0632.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.baseUrl(\n    \"https:\/\/example.com\/\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">baseUrl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;https:\/\/example.com\/&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0622\u062f\u0631\u0633 \u0627\u0635\u0644\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u062f\u0627\u062e\u0644 API:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@GET(\"users.php\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/users.php\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.addConverterFactory(\n    GsonConverterFactory.create()\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addConverterFactory<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    GsonConverterFactory.<\/span><span style=\"color: #6F42C1\">create<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0647\u0631 JSON \u06a9\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 \u0622\u0645\u062f\u060c \u0628\u0627 Gson \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>retrofit.create(UserApi::class.java)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">retrofit.<\/span><span style=\"color: #6F42C1\">create<\/span><span style=\"color: #24292E\">(UserApi::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Interface \u0645\u0627 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0648\u0627\u0642\u0639\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 Repository \u0645\u0627 \u0648\u0627\u0642\u0639\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserRepositoryImpl(\n\n    private val api:UserApi\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api:<\/span><span style=\"color: #6F42C1\">UserApi<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0634\u062a\u06cc\u0645. \u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserRepositoryImpl(\n\n    private val api:UserApi\n\n):UserRepository{\n\n\noverride suspend fun getUsers():\n\nList&lt;User>{\n\n\n    return api.getUsers()\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api:<\/span><span style=\"color: #6F42C1\">UserApi<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>api.getUsers()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0627\u0642\u0639\u0627\u064b \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0635\u0641\u062d\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\" dir=\"ltr\">UserScreen<br>\u2193<br>ViewModel<br>\u2193<br>loadUsers()<br>\u2193<br>Repository<br>\u2193<br>api.getUsers()<br>\u2193<br>Retrofit<br>\u2193<br>GET users.php<br>\u2193<br>PHP Server<br>\u2193<br>JSON<br>\u2193<br>Gson<br>\u2193<br>List&lt;User&gt;<br>\u2193<br>StateFlow<br>\u2193<br>Compose<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a Response<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u062b\u0627\u0644 \u0642\u0628\u0644\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u06af\u0641\u062a\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;User&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u06af\u0631\u062f\u062f. \u0627\u0645\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b Response \u06a9\u0627\u0645\u0644 \u062f\u0627\u0631\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0633\u0631\u0648\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"success\":true,\n \"data\":&#91;\n   {\n    \"id\":1,\n    \"name\":\"Ali\"\n   }\n &#93;\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">true<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;data&quot;<\/span><span style=\"color: #24292E\">:&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">   }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> &#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0645\u062f\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class UserResponse(\n\n    val success:Boolean,\n\n    val data:List&lt;User>\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserResponse<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success:<\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0634\u0648\u062f \u0648 API:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@GET(\"users.php\")\nsuspend fun getUsers():\n\nUserResponse\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@GET<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;users.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">UserResponse<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0647\u0645\u06cc\u0634\u0647 \u0645\u0648\u0641\u0642 \u0646\u06cc\u0633\u062a\u06cc\u0645. \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0634\u0648\u062f<\/li>\n\n\n\n<li>\u0633\u0631\u0648\u0631 \u062e\u0627\u0645\u0648\u0634 \u0628\u0627\u0634\u062f<\/li>\n\n\n\n<li>\u067e\u0627\u0633\u062e \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0627\u0634\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>try {\n\n\n    val users =\n        api.getUsers()\n\n\n}\n\ncatch(e:Exception){\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">try<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u0627\u064b \u062f\u0631 \u062f\u0631\u0633 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u06a9\u0627\u0645\u0644\u200c\u062a\u0631 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Timeout<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0627\u0647\u06cc \u0633\u0631\u0648\u0631 \u062e\u06cc\u0644\u06cc \u062f\u06cc\u0631 \u062c\u0648\u0627\u0628 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u06cc\u200c\u0646\u0647\u0627\u06cc\u062a\u060c OkHttp \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val client =\nOkHttpClient.Builder()\n\n    .connectTimeout(\n        20,\n        TimeUnit.SECONDS\n    )\n\n    .build()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> client <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">OkHttpClient.<\/span><span style=\"color: #6F42C1\">Builder<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">connectTimeout<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #005CC5\">20<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        TimeUnit.SECONDS<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    .<\/span><span style=\"color: #6F42C1\">build<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Logging \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Debug \u06a9\u0631\u062f\u0646 API \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0647 URL\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u061f \u0686\u0647 JSON\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u061f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HttpLoggingInterceptor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val logging =\nHttpLoggingInterceptor()\n\n\nlogging.level =\nHttpLoggingInterceptor.Level.BODY\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> logging <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">HttpLoggingInterceptor<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">logging.level <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">HttpLoggingInterceptor.Level.BODY<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>OkHttpClient.Builder()\n\n.addInterceptor(logging)\n\n.build()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">OkHttpClient.<\/span><span style=\"color: #6F42C1\">Builder<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addInterceptor<\/span><span style=\"color: #24292E\">(logging)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">build<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0627\u062e\u0644 Logcat \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>GET \/users.php\n\n\nResponse 200\n\n\n&#91;\n {\n  \"id\":1\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">GET <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\">users.php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Response <\/span><span style=\"color: #005CC5\">200<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0645\u0627 \u062f\u0631 Release \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a Level.BODY \u062f\u0631 \u0646\u0633\u062e\u0647 \u0646\u0647\u0627\u06cc\u06cc \u062e\u0637\u0631\u0646\u0627\u06a9 \u0627\u0633\u062a. \u0686\u0648\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Token<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631<\/li>\n\n\n\n<li>\u062f\u0627\u062f\u0647 \u062d\u0633\u0627\u0633<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Log \u0628\u06cc\u0641\u062a\u062f. \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0641\u0642\u0637 \u062f\u0631 Debug \u0641\u0639\u0627\u0644\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 Retrofit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n\u251c\u2500\u2500 data\n\n\u2502   \u251c\u2500\u2500 api\n\n\u2502   \u2502    \u2514\u2500\u2500 UserApi.kt\n\n\u2502   \u2502\n\u2502   \u251c\u2500\u2500 retrofit\n\n\u2502   \u2502    \u2514\u2500\u2500 RetrofitInstance.kt\n\n\u2502   \u2502\n\u2502   \u2514\u2500\u2500 repository\n\n\n\u251c\u2500\u2500 domain\n\n\u2502   \u2514\u2500\u2500 model\n\n\u2502        \u2514\u2500\u2500 User.kt\n\n\n\u2514\u2500\u2500 presentation\n\n    \u2514\u2500\u2500 UserViewModel.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc<\/strong><strong> Retrofit<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645\u060c \u062e\u0648\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Retrofit \u0631\u0648 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"com.squareup.retrofit2:retrofit:2.9.0\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;com.squareup.retrofit2:retrofit:2.9.0&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u0628\u062e\u0634 \u0627\u0635\u0644\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 API \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u0639\u0646\u06cc \u0645\u0627 \u0641\u0642\u0637 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631\u060c \u0646\u0648\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u0645\u062f\u0644 \u067e\u0627\u0633\u062e \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 Retrofit \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u0633\u0627\u062e\u062a Request\u060c \u0627\u0631\u0633\u0627\u0644 \u0622\u0646 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a Response \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647. \u0628\u062f\u0648\u0646 Retrofit \u0645\u062c\u0628\u0648\u0631 \u0628\u0648\u062f\u06cc\u0645 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u060c \u062e\u0648\u0627\u0646\u062f\u0646 \u067e\u0627\u0633\u062e \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0632\u0626\u06cc\u0627\u062a HTTP \u0631\u0648 \u062f\u0633\u062a\u06cc \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc<\/strong><strong> Converter Gson<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0633\u062e\u06cc \u06a9\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 PHP \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0647 \u0634\u06a9\u0644 JSON \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0627 Object\u0647\u0627\u06cc \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u062b\u0644 User \u0648 UserResponse \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u06cc\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"com.squareup.retrofit2:converter-gson:2.9.0\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;com.squareup.retrofit2:converter-gson:2.9.0&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Converter \u067e\u0627\u0633\u062e JSON \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0646\u0627\u0645 \u0641\u06cc\u0644\u062f\u0647\u0627\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u06a9\u0627\u062a\u0644\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc id\u060c name \u0648 job \u062f\u0627\u062e\u0644 JSON \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0647\u0645\u200c\u0646\u0627\u0645 \u062f\u0627\u062e\u0644 \u06a9\u0644\u0627\u0633 User \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc<\/strong><strong> Logging Interceptor<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u062a\u0648\u0633\u0639\u0647 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0634\u062f\u0647 \u0648 \u0686\u0647 \u067e\u0627\u0633\u062e\u06cc \u0628\u0631\u06af\u0634\u062a\u0647\u060c \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"com.squareup.okhttp3:logging-interceptor:4.12.0\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;com.squareup.okhttp3:logging-interceptor:4.12.0&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Logging Interceptor \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 Logcat \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0647\u0646\u06af\u0627\u0645 \u0631\u0641\u0639 \u062e\u0637\u0627 \u062e\u06cc\u0644\u06cc \u0645\u0641\u06cc\u062f\u0647\u060c \u0686\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 URL\u060c \u0646\u0648\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c \u06a9\u062f \u067e\u0627\u0633\u062e \u0648 JSON \u0628\u0631\u06af\u0634\u062a\u06cc \u0631\u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0648 \u0645\u062a\u0648\u062c\u0647 \u0628\u0634\u06cc\u0645 \u0645\u0634\u06a9\u0644 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0633\u062a \u06cc\u0627 \u0633\u0631\u0648\u0631.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062c\u0648\u0632<\/strong><strong> INTERNET<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0627\u0632\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u06cc\u0627 \u0633\u0631\u0648\u0631 \u062f\u0627\u062e\u0644 \u0634\u0628\u06a9\u0647 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0627\u06cc\u0646 \u0645\u062c\u0648\u0632 \u062f\u0627\u062e\u0644 AndroidManifest.xml \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;uses-permission\n\n\u00a0\u00a0\u00a0 android:name=\"android.permission.INTERNET\" \/><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">uses<\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\">permission<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 android:<\/span><span style=\"color: #6F42C1\">name<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #032F62\">&quot;android.permission.INTERNET&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">\/&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0648\u0646 \u0627\u06cc\u0646 \u0645\u062c\u0648\u0632\u060c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0628\u06a9\u0647 \u0631\u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u06cc\u200c\u062f\u0647. \u0627\u06cc\u0646 \u0645\u062c\u0648\u0632 \u0628\u0631\u062e\u0644\u0627\u0641 \u0628\u0639\u0636\u06cc \u0645\u062c\u0648\u0632\u0647\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u0623\u06cc\u06cc\u062f \u062f\u0633\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0646\u062f\u0627\u0631\u0647 \u0648 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 Manifest \u0646\u0648\u0634\u062a\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>usesCleartextTraffic <\/strong><strong>\u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0645\u062d\u0644\u06cc XAMPP \u0645\u0627 \u0627\u0632 \u0622\u062f\u0631\u0633 http \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0646\u0647 https. \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0631\u062a\u0628\u0627\u0637\u200c\u0647\u0627\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0646\u0634\u062f\u0647\u200c\u06cc HTTP \u0631\u0648 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u062f\u0627\u062e\u0644 \u062a\u06af application \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">android:usesCleartextTraffic=&#8221;true&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u062a\u0645\u0631\u06cc\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 HTTP \u0645\u062a\u0635\u0644 \u0628\u0634\u0647. \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648 \u062a\u0633\u062a \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0645\u062d\u0644\u06cc \u0645\u0646\u0627\u0633\u0628\u0647. \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0648\u0627\u0642\u0639\u06cc \u062f\u0627\u0631\u0627\u06cc HTTPS \u0648\u0635\u0644 \u0634\u062f\u060c \u0628\u0647\u062a\u0631\u0647 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u062d\u0630\u0641 \u0628\u0634\u0647\u060c \u0686\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 HTTP \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0646 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0627\u0632 <\/strong><strong>10.0.2.2 <\/strong><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u060c \u0633\u0631\u0648\u0631 XAMPP \u0631\u0648 \u0628\u0627 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">http:\/\/localhost\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0627\u062e\u0644 \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f\u060c localhost \u0628\u0647 \u062e\u0648\u062f \u06af\u0648\u0634\u06cc \u0645\u062c\u0627\u0632\u06cc \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0646\u0647 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u06cc \u06a9\u0647 XAMPP \u0631\u0648\u06cc \u0622\u0646 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647. \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u0645\u06cc\u0632\u0628\u0627\u0646 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0645\u062e\u0635\u0648\u0635 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u0645\u0648\u0646 \u0645\u06cc\u200c\u0630\u0627\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">10.0.2.2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0622\u062f\u0631\u0633 Retrofit \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;http:\/\/10.0.2.2\/helloiman_api\/&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc Android Emulator \u0627\u0633\u062a. \u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u0631\u0648\u06cc \u06af\u0648\u0634\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 IP \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u062f\u0627\u062e\u0644 \u0634\u0628\u06a9\u0647 \u0645\u062d\u0644\u06cc \u06cc\u0627 \u0622\u062f\u0631\u0633 \u0648\u0627\u0642\u0639\u06cc \u0633\u0631\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0627\u0646\u062a\u0647\u0627\u06cc<\/strong><strong> Base URL <\/strong><strong>\u0639\u0644\u0627\u0645\u062a <\/strong><strong>\/ <\/strong><strong>\u062f\u0627\u0631\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0622\u062f\u0631\u0633 \u0627\u0635\u0644\u06cc Retrofit \u0628\u0627\u06cc\u062f \u0628\u0647 \u0639\u0644\u0627\u0645\u062a \/ \u062e\u062a\u0645 \u0628\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private const val BASE_URL =\n\n\u00a0\u00a0\u00a0 \"http:\/\/10.0.2.2\/helloiman_api\/\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">const<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> BASE_URL <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;http:\/\/10.0.2.2\/helloiman_api\/&quot;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0627\u0635\u0644\u06cc \u0631\u0648 \u0628\u0627 \u0645\u0633\u06cc\u0631 \u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u062f\u0627\u062e\u0644 @GET \u062a\u0631\u06a9\u06cc\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">@GET(&#8220;users.php&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0622\u062f\u0631\u0633 \u06a9\u0627\u0645\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">http:\/\/10.0.2.2\/helloiman_api\/users.php<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \/ \u0627\u0646\u062a\u0647\u0627\u06cc Base URL \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c Retrofit \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a\u0646 \u0646\u0645\u0648\u0646\u0647 \u062e\u0637\u0627 \u0645\u06cc\u200c\u062f\u0647\u060c \u0686\u0648\u0646 \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0633\u06cc\u0631 \u067e\u0627\u06cc\u0647 \u0648 \u0645\u0633\u06cc\u0631 Request \u0631\u0648 \u062f\u0631\u0633\u062a \u0628\u0647 \u0647\u0645 \u0645\u062a\u0635\u0644 \u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 <\/strong><strong>UserResponse<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0641\u0642\u0637 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0633\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0631\u0646\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647\u060c \u0628\u0644\u06a9\u0647 \u067e\u0627\u0633\u062e \u06a9\u0627\u0645\u0644\u200c\u062a\u0631\u06cc \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\n\u00a0 \"success\": true,\n\n\u00a0 \"data\": [],\n\n\u00a0 \"message\": null\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">true<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 <\/span><span style=\"color: #032F62\">&quot;data&quot;<\/span><span style=\"color: #24292E\">: [],<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 <\/span><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u06a9\u0644\u0627\u0633 User\u060c \u06a9\u0644\u0627\u0633 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 UserResponse \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class UserResponse(\n\n\u00a0\u00a0\u00a0 val success: Boolean,\n\n\u00a0\u00a0\u00a0 val data: List&lt;User>,\n\n\u00a0\u00a0\u00a0 val message: String? = null\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserResponse<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success: <\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u06a9\u0644 \u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631 \u0627\u0633\u062a. success \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0647 \u06cc\u0627 \u0646\u0647\u060c data \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 message \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u06cc\u0627 \u062a\u0648\u0636\u06cc\u062d \u0633\u0631\u0648\u0631 \u0631\u0648 \u062f\u0631 \u062e\u0648\u062f\u0634 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u0627\u0633 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 JSON \u0647\u0645\u0627\u0647\u0646\u06af \u0628\u0627\u0634\u0647 \u062a\u0627 Gson \u0628\u062a\u0648\u0646\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0631\u0648 \u062f\u0631\u0633\u062a \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Interface <\/strong><strong>\u0645\u0631\u0628\u0648\u0637 \u0628\u0647<\/strong><strong> API<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 UserApi \u06cc\u06a9 Interface \u0627\u0633\u062a \u06a9\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">interface UserApi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 Interface \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u200c\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u0647 Request\u0647\u0627\u06cc\u06cc \u062f\u0627\u0631\u06cc\u0645\u060c \u0647\u0631 Request \u0628\u0647 \u0686\u0647 \u0645\u0633\u06cc\u0631\u06cc \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u067e\u0627\u0633\u062e \u0622\u0646 \u0627\u0632 \u0686\u0647 \u0646\u0648\u0639\u06cc\u0647. \u062e\u0648\u062f Interface \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0627\u0642\u0639\u06cc \u0631\u0648 \u0627\u0631\u0633\u0627\u0644 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647\u061b Retrofit \u0628\u0639\u062f\u0627\u064b \u0628\u0631\u0627\u0633\u0627\u0633 \u0647\u0645\u06cc\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 \u0622\u0646 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0633\u062a\u0648\u0631 <\/strong><strong>@GET<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0644\u0627\u06cc \u062a\u0627\u0628\u0639 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">@GET(&#8220;users.php&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Annotation \u0628\u0647 Retrofit \u0645\u06cc\u200c\u06af\u0647 \u062a\u0627\u0628\u0639 \u0632\u06cc\u0631 \u0622\u0646 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0646\u0648\u0639 GET \u0628\u0647 \u0645\u0633\u06cc\u0631 users.php \u0628\u0641\u0631\u0633\u062a\u0647. Retrofit \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0631\u0648 \u0628\u0647 Base URL \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0622\u062f\u0631\u0633 \u06a9\u0627\u0645\u0644 Request \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0641\u0627\u06cc\u0644 \u062f\u06cc\u06af\u0631\u06cc \u0645\u062b\u0644 user_detail.php \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0628\u0631\u0627\u06cc \u0622\u0646 \u0647\u0645 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u062c\u062f\u06cc\u062f \u0628\u0627 @GET \u062c\u062f\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062e\u0631\u0648\u062c\u06cc<\/strong><strong> API <\/strong><strong>\u0627\u0632 \u0646\u0648\u0639 <\/strong><strong>UserResponse <\/strong><strong>\u0627\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 API \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">suspend fun getUsers(): UserResponse<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 JSON \u0633\u0631\u0648\u0631 \u0634\u0627\u0645\u0644 success\u060c data \u0648 message \u0627\u0633\u062a\u060c \u062e\u0631\u0648\u062c\u06cc \u062a\u0627\u0628\u0639 \u0647\u0645 \u0628\u0627\u06cc\u062f \u06a9\u0644\u0627\u0633\u06cc \u0628\u0627\u0634\u0647 \u06a9\u0647 \u0647\u0645\u06cc\u0646 \u0633\u0647 \u0628\u062e\u0634 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. Gson \u067e\u0627\u0633\u062e JSON \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 UserResponse \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0647\u0645 \u062f\u0627\u062e\u0644 \u0648\u06cc\u0698\u06af\u06cc data \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Retrofit.Builder<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 Retrofit \u0627\u0632 Builder \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Retrofit.Builder()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Builder \u06cc\u0639\u0646\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0648 \u0645\u0631\u062d\u0644\u0647\u200c\u0628\u0647\u200c\u0645\u0631\u062d\u0644\u0647 \u0631\u0648\u06cc Retrofit \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0628\u0627 build() \u0646\u0645\u0648\u0646\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631\u060c OkHttpClient \u0648 Converter \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Gson \u0631\u0648 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>addConverterFactory<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0647 Retrofit \u0645\u06cc\u200c\u06af\u0647 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0631\u0648 \u0628\u0627 Gson \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.addConverterFactory(\n\n\u00a0 \u00a0\u00a0GsonConverterFactory.create()\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addConverterFactory<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 \u00a0\u00a0GsonConverterFactory.<\/span><span style=\"color: #6F42C1\">create<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u062e\u0648\u062f\u0634 \u0646\u0645\u06cc\u200c\u062f\u0648\u0646\u0647 \u0645\u062a\u0646 JSON \u0628\u0627\u06cc\u062f \u0628\u0647 \u0686\u0647 \u0634\u06a9\u0644\u06cc \u0628\u0647 Object \u06a9\u0627\u062a\u0644\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0634\u0647. \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 GsonConverterFactory \u0627\u06cc\u0646 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0631\u0648 \u0628\u0647 Gson \u0645\u06cc\u200c\u0633\u067e\u0627\u0631\u06cc\u0645. Gson \u0647\u0645 \u0628\u0631\u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u062e\u0631\u0648\u062c\u06cc \u062a\u0627\u0628\u0639\u060c \u0645\u062b\u0644\u0627\u064b UserResponse\u060c \u06a9\u0644\u0627\u0633 \u0645\u0646\u0627\u0633\u0628 \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>retrofit.create<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u062e\u062a Retrofit \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>retrofit.create(\n\n\u00a0\u00a0\u00a0 UserApi::class.java\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">retrofit.<\/span><span style=\"color: #6F42C1\">create<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 UserApi::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 Interface \u0628\u0647 \u0646\u0627\u0645 UserApi \u0633\u0627\u062e\u062a\u0647 \u0628\u0648\u062f\u06cc\u0645 \u0648 \u062f\u0627\u062e\u0644\u0634 \u0647\u06cc\u0686 \u06a9\u062f \u0648\u0627\u0642\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 Request \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a. retrofit.create \u0628\u0631\u0627\u0633\u0627\u0633 Annotation\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 @GET \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 \u0627\u06cc\u0646 Interface \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0628\u0639\u062f \u0627\u0632 \u0622\u0646 \u0648\u0642\u062a\u06cc api.getUsers \u0631\u0648 \u0635\u062f\u0627 \u0645\u06cc\u200c\u0632\u0646\u06cc\u0645\u060c Retrofit \u0648\u0627\u0642\u0639\u0627\u064b \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0631\u0648 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>RetrofitInstance <\/strong><strong>\u0631\u0627 \u0628\u0627 <\/strong><strong>object <\/strong><strong>\u0633\u0627\u062e\u062a\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 Retrofit \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 object \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">object RetrofitInstance<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646\u060c object \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062f\u0631 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0633\u0627\u062e\u062a\u0646 Retrofit \u0648 OkHttpClient \u0647\u0632\u06cc\u0646\u0647 \u062f\u0627\u0631\u0647 \u0648 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0628\u0627 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u06cc\u062c\u0627\u062f \u0628\u0634\u0646. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0645\u0634\u062a\u0631\u06a9 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u0648 \u062a\u0645\u0627\u0645 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>HttpLoggingInterceptor<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u0634\u0628\u06a9\u0647 \u06cc\u06a9 Logging Interceptor \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val loggingInterceptor =\n\n\u00a0\u00a0\u00a0 HttpLoggingInterceptor()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> loggingInterceptor <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">HttpLoggingInterceptor<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Interceptor \u0628\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648 \u0633\u0631\u0648\u0631 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0639\u0628\u0648\u0631\u06cc \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646\u062c\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u0628\u06a9\u0647 \u062f\u0627\u062e\u0644 Logcat \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0646\u0647 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>apply<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Logging Interceptor \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>HttpLoggingInterceptor().apply {\n\n\u00a0\u00a0\u00a0 level =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 HttpLoggingInterceptor.Level.BODY\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">HttpLoggingInterceptor<\/span><span style=\"color: #24292E\">().<\/span><span style=\"color: #6F42C1\">apply<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 level <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 HttpLoggingInterceptor.Level.BODY<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">apply \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 Object\u060c \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0647\u0645\u0627\u0646 Object \u0631\u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645. \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0628\u0644\u0648\u06a9\u060c this \u0647\u0645\u0627\u0646 HttpLoggingInterceptor \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0648\u06cc\u0698\u06af\u06cc level \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645 \u0648 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0647\u0645 \u062e\u0648\u062f Object \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0637\u062d<\/strong><strong> Logging <\/strong><strong>\u0628\u0627 <\/strong><strong>Level.BODY<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">HttpLoggingInterceptor.Level.BODY<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0627\u0645\u0644\u200c\u062a\u0631\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u062f\u0627\u062e\u0644 Logcat \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0634\u0627\u0645\u0644 Header\u0647\u0627 \u0648 \u0628\u062f\u0646\u0647 JSON \u0647\u0645 \u0628\u0627\u0634\u0647. \u0627\u06cc\u0646 \u0633\u0637\u062d \u0628\u0631\u0627\u06cc Debug \u0645\u0646\u0627\u0633\u0628\u0647\u060c \u0627\u0645\u0627 \u062f\u0631 \u0646\u0633\u062e\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0628\u0627\u06cc\u062f \u0641\u0639\u0627\u0644 \u0628\u0645\u0648\u0646\u0647\u060c \u0686\u0648\u0646 \u0645\u0645\u06a9\u0646\u0647 Token\u060c \u0631\u0645\u0632\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u06cc\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0631\u0648 \u0648\u0627\u0631\u062f Log \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>OkHttpClient.Builder<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc Request\u0647\u0627 \u0627\u0632 OkHttp \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u06cc\u06a9 Client \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">OkHttpClient.Builder()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0645\u062b\u0644 Timeout \u0648 Logging \u0631\u0648\u06cc \u0647\u0645\u06cc\u0646 Client \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646. \u0628\u0639\u062f Client \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0628\u0647 Retrofit \u0645\u06cc\u200c\u062f\u06cc\u0645 \u062a\u0627 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a<\/strong><strong> Timeout<\/strong><strong>\u0647\u0627<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Client \u0633\u0647 Timeout \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645. connectTimeout \u062d\u062f\u0627\u06a9\u062b\u0631 \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0635\u0628\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. readTimeout \u0645\u062f\u062a \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u0645\u0646\u062a\u0638\u0631 \u0645\u06cc\u200c\u0645\u0648\u0646\u0647 \u0648 writeTimeout \u0645\u062f\u062a \u0645\u062c\u0627\u0632 \u0628\u0631\u0627\u06cc \u0641\u0631\u0633\u062a\u0627\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0647\u0631\u06a9\u062f\u0627\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0632\u0645\u0627\u0646\u200c\u0647\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u062d\u062f \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647 \u0637\u0648\u0644 \u0628\u06a9\u0634\u0647\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u0634\u0647 \u0648 Exception \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u0634\u0647\u061b \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0634\u0647 \u0645\u0646\u062a\u0638\u0631 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062e\u0631\u0627\u0628 \u06cc\u0627 \u06a9\u0646\u062f \u0628\u0627\u0642\u06cc \u0646\u0645\u06cc\u200c\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>TimeUnit.SECONDS<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0646\u0638\u06cc\u0645 Timeout \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">20,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">TimeUnit.SECONDS<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u062f\u062f 20 \u0628\u0647\u200c\u062a\u0646\u0647\u0627\u06cc\u06cc \u0645\u0634\u062e\u0635 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u0645\u0646\u0638\u0648\u0631 \u06f2\u06f0 \u062b\u0627\u0646\u06cc\u0647\u060c \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 \u06cc\u0627 \u062f\u0642\u06cc\u0642\u0647 \u0627\u0633\u062a. TimeUnit.SECONDS \u0648\u0627\u062d\u062f \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0647 OkHttp \u0645\u06cc\u200c\u06af\u0647 \u062d\u062f\u0627\u06a9\u062b\u0631 \u06f2\u06f0 \u062b\u0627\u0646\u06cc\u0647 \u0645\u0646\u062a\u0638\u0631 \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646<\/strong><strong> Interceptor <\/strong><strong>\u0628\u0647<\/strong><strong> Client<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u062e\u062a Logging Interceptor\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 OkHttpClient \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.addInterceptor(\n\n\u00a0\u00a0\u00a0 loggingInterceptor\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addInterceptor<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 loggingInterceptor<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0635\u0631\u0641\u0627\u064b \u0633\u0627\u062e\u062a\u0646 Interceptor \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u062a\u0627 \u0648\u0642\u062a\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0627 addInterceptor() \u0628\u0647 Client \u0645\u062a\u0635\u0644 \u0646\u06a9\u0646\u06cc\u0645\u060c \u0647\u06cc\u0686 Request \u06cc\u0627 Response\u0627\u06cc \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0686\u06cc\u0632\u06cc \u062f\u0627\u062e\u0644 Logcat \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0627\u062f\u0646<\/strong><strong> OkHttpClient <\/strong><strong>\u0628\u0647<\/strong><strong> Retrofit<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Client \u062a\u0646\u0638\u06cc\u0645\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0628\u0647 Retrofit \u0648\u0635\u0644 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.client(\n\n\u00a0\u00a0\u00a0 client\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">client<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 client<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646 \u0644\u062d\u0638\u0647 Retrofit \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0627\u0632 \u0647\u0645\u06cc\u0646 Client \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Timeout\u0647\u0627 \u0648 Logging\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u06cc Client \u06af\u0630\u0627\u0634\u062a\u06cc\u0645\u060c \u0631\u0648\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a getUsers() \u0647\u0645 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Repository <\/strong><strong>\u0633\u0627\u062f\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 Repository \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0627\u062f\u0647 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class UserRepository(\n\n\u00a0\u00a0\u00a0 private val api: UserApi =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 RetrofitInstance.api\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api: <\/span><span style=\"color: #6F42C1\">UserApi<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 RetrofitInstance.api<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u062f\u0641 Repository \u0627\u06cc\u0646\u0647 \u06a9\u0647 ViewModel \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631\u06af\u06cc\u0631 \u062c\u0632\u0626\u06cc\u0627\u062a Retrofit \u0646\u0634\u0647. ViewModel \u0641\u0642\u0637 \u0627\u0632 Repository \u0645\u06cc\u200c\u062e\u0648\u0627\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0647 \u0648 Repository \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0628\u0647 API \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0632\u06cc\u0627\u062f \u0634\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u060c Interface \u0648 Implementation \u062c\u062f\u0627 \u0646\u0633\u0627\u062e\u062a\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 <\/strong><strong>api<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u0633\u0627\u0632\u0646\u062f\u0647 Repository \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val api: UserApi =\n\n\u00a0\u00a0\u00a0 RetrofitInstance.api<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api: <\/span><span style=\"color: #6F42C1\">UserApi<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 RetrofitInstance.api<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a Repository \u0647\u06cc\u0686 API\u0627\u06cc \u0628\u0647 \u0622\u0646 \u0646\u062f\u06cc\u0645\u060c \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0632 RetrofitInstance.api \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">UserRepository()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 \u06cc\u06a9 API \u062f\u06cc\u06af\u0631 \u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647. \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0639\u062f\u0627\u064b \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u06a9\u0631\u062f\u0646 Repository \u0645\u0641\u06cc\u062f \u0645\u06cc\u0634\u0647\u060c \u0686\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0647\u200c\u062c\u0627\u06cc API \u0648\u0627\u0642\u0639\u06cc \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0647 \u0622\u0646 \u0628\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a \u0645\u0648\u0641\u0642\u06cc\u062a<\/strong><strong> HTTP <\/strong><strong>\u0628\u0627 <\/strong><strong>response.success<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0646\u0638\u0631 HTTP \u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0647 \u0648 \u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e 200 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647\u060c \u0627\u0645\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0627\u0633\u062e \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">if (response.success)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 success \u0628\u062e\u0634\u06cc \u0627\u0632 JSON \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0633\u062a \u0648 PHP \u0622\u0646 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u067e\u0633 \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0634\u0628\u06a9\u0647 \u0644\u0632\u0648\u0645\u0627\u064b \u0628\u0647 \u0645\u0639\u0646\u06cc \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06cc\u0633\u062a. \u0645\u062b\u0644\u0627\u064b \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u067e\u0627\u0633\u062e \u0645\u0639\u062a\u0628\u0631 \u0628\u062f\u0647\u060c \u0627\u0645\u0627 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0628\u0646\u0648\u06cc\u0633\u0647 success: false.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>localizedMessage<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Exception \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u060c \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062a\u0648\u0636\u06cc\u062d \u0622\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">exception.localizedMessage<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u062a\u0646 \u0642\u0627\u0628\u0644\u200c\u0641\u0647\u0645\u200c\u062a\u0631\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u062e\u0637\u0627 \u0645\u06cc\u200c\u062f\u0647\u061b \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646\u06a9\u0647 \u0627\u062a\u0635\u0627\u0644 \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u0634\u062f\u0647 \u06cc\u0627 \u0632\u0645\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0645\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0686\u0648\u0646 \u0645\u0645\u06a9\u0646\u0647 \u0645\u0642\u062f\u0627\u0631\u0634 null \u0628\u0627\u0634\u0647\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0647\u0645 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0639\u0645\u0644\u06af\u0631<\/strong><strong> Elvis <\/strong><strong>\u06cc\u0639\u0646\u06cc <\/strong><strong>?:<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>exception.localizedMessage\n\u00a0\u00a0\u00a0 ?: \"\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u0634\u062f\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">exception.localizedMessage<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ?: <\/span><span style=\"color: #032F62\">&quot;\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u0634\u062f&quot;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0645\u0644\u06af\u0631 ?: \u0645\u06cc\u200c\u06af\u0647 \u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0633\u0645\u062a \u0686\u067e null \u0646\u0628\u0648\u062f\u060c \u0647\u0645\u0627\u0646 \u0631\u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u061b \u0627\u0645\u0627 \u0627\u06af\u0631 null \u0628\u0648\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u0631\u0648 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u062d\u062a\u06cc \u0627\u06af\u0631 Exception \u067e\u06cc\u0627\u0645 \u0645\u0634\u062e\u0635\u06cc \u0646\u062f\u0627\u0634\u062a\u060c \u06a9\u0627\u0631\u0628\u0631 \u0628\u062f\u0648\u0646 \u067e\u06cc\u0627\u0645 \u0631\u0647\u0627 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>when <\/strong><strong>\u0628\u062f\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0634\u062e\u0635<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 UserScreen \u0627\u0632 \u0627\u06cc\u0646 \u0634\u06a9\u0644 when \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when {\n\n\u00a0\u00a0\u00a0 state.loading -> { }\n\n\u00a0\u00a0\u00a0 state.error != null -> { }\n\n\u00a0\u00a0\u00a0 else -> { }\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 state.loading <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> { }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 state.error <\/span><span style=\"color: #D73A49\">!=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> { }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> { }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 when \u0631\u0648\u06cc \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0627\u062c\u0631\u0627 \u0646\u0634\u062f\u0647\u060c \u0628\u0644\u06a9\u0647 \u0647\u0631 \u0634\u0627\u062e\u0647 \u06cc\u06a9 \u0634\u0631\u0637 \u062c\u062f\u0627 \u062f\u0627\u0631\u0647. \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0634\u0631\u0637\u200c\u0647\u0627 \u0631\u0648 \u0627\u0632 \u0628\u0627\u0644\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0627\u0648\u0644\u06cc\u0646 \u0634\u0631\u0637\u06cc \u06a9\u0647 true \u0628\u0627\u0634\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647. \u0627\u0628\u062a\u062f\u0627 Loading \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u0634\u0647\u060c \u0628\u0639\u062f Error \u0648 \u0627\u06af\u0631 \u0647\u06cc\u0686\u200c\u06a9\u062f\u0627\u0645 \u0646\u0628\u0648\u062f\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u06a9\u0645\u0647 \u062a\u0644\u0627\u0634 \u062f\u0648\u0628\u0627\u0631\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0637\u0627 \u0645\u06cc\u200c\u062e\u0648\u0631\u0647\u060c \u062f\u06a9\u0645\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 Request \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>onRetry = {\n\n\u00a0\u00a0\u00a0 viewModel.loadUsers()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">onRetry <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 viewModel.<\/span><span style=\"color: #6F42C1\">loadUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u06a9\u0645\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0647\u0645\u0627\u0646 \u062a\u0627\u0628\u0639 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062c\u062f\u06cc\u062f\u060c State \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0648\u0636\u0639\u06cc\u062a Loading \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0639\u062f \u0628\u0631\u0627\u0633\u0627\u0633 \u0646\u062a\u06cc\u062c\u0647\u060c \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u06a9\u0645\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u0648\u0641\u0642 \u0647\u0645 \u062f\u06a9\u0645\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc Refresh \u06a9\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>onRefresh = {\n\n\u00a0\u00a0\u00a0 viewModel.loadUsers()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">onRefresh <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 viewModel.<\/span><span style=\"color: #6F42C1\">loadUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u06a9\u0645\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0627\u0632 \u062e\u0648\u062f \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0645\u062d\u062a\u0648\u0627\u06cc users.php \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0628\u0627 \u0632\u062f\u0646 \u0627\u06cc\u0646 \u062f\u06a9\u0645\u0647 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f \u062f\u0627\u062e\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>item <\/strong><strong>\u0648 <\/strong><strong>items <\/strong><strong>\u062f\u0627\u062e\u0644<\/strong><strong> LazyColumn<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 LazyColumn \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u06cc\u06a9 \u0622\u06cc\u062a\u0645 \u062b\u0627\u0628\u062a \u0645\u062b\u0644 \u0639\u0646\u0648\u0627\u0646 \u0648 \u062f\u06a9\u0645\u0647 \u0627\u0632:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">item {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>items(\n\n\u00a0\u00a0\u00a0 items = users\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">items<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 items <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> users<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. item \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u062e\u0634 \u062b\u0627\u0628\u062a \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 items \u0628\u0631\u0627\u06cc \u0647\u0631 \u0639\u0636\u0648 \u0644\u06cc\u0633\u062a \u06cc\u06a9 Composable \u062c\u062f\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f0<br>\u0633\u0627\u062e\u062a \u0633\u06cc\u0633\u062a\u0645 Login \u0628\u0627 JWT<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0633\u0627\u062e\u062a\u06cc\u0645 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0627\u0632 \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0645\u0647\u0645 \u062f\u0627\u0631\u06cc\u0645. \u0627\u0644\u0627\u0646 \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0628\u06cc\u0646\u062f. \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0639\u0636\u06cc \u0628\u062e\u0634\u200c\u0647\u0627 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0647\u0633\u062a\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u06a9\u0627\u0631\u0628\u0631 \u0642\u06cc\u0645\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0628\u06cc\u0646\u062f<\/li>\n\n\n\n<li>\u0647\u0634\u062f\u0627\u0631 \u0642\u06cc\u0645\u062a \u0628\u0633\u0627\u0632\u062f<\/li>\n\n\n\n<li>\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0634\u062e\u0635\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0628 \u062e\u0648\u062f\u0634 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u06cc\u062f \u0645\u0641\u0647\u0648\u0645 <strong>Authentication<\/strong> \u0631\u0627 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Authentication \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Authentication \u06cc\u0639\u0646\u06cc \u062a\u0648 \u0648\u0627\u0642\u0639\u0627\u064b \u0686\u0647 \u06a9\u0633\u06cc \u0647\u0633\u062a\u06cc\u061f \u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u0648\u0627\u0631\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u0634\u0648\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Username<br>+<br>Password<br>\u2193<br>Server<br>\u2193<br>User \u062a\u0627\u06cc\u06cc\u062f \u0634\u062f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f: \u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f \u0627\u06af\u0631 \u062f\u0631\u0633\u062a \u0628\u0648\u062f\u060c \u0627\u062c\u0627\u0632\u0647 \u0648\u0631\u0648\u062f \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a Authentication \u0648 Authorization<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0648 \u0645\u0641\u0647\u0648\u0645 \u062e\u06cc\u0644\u06cc \u0628\u0627 \u0647\u0645 \u0627\u0634\u062a\u0628\u0627\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Authentication<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062a\u0648 \u06a9\u06cc \u0647\u0633\u062a\u06cc\u061f \u0645\u062b\u0644\u0627\u064b Ali \u0648\u0627\u0631\u062f \u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Authorization<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647\u06cc\u061f<br>\u0645\u062b\u0644\u0627\u064b: Admin \u0627\u062c\u0627\u0632\u0647 \u062d\u0630\u0641 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u0631\u062f. User \u0645\u0639\u0645\u0648\u0644\u06cc \u0627\u062c\u0627\u0632\u0647 \u0646\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644 \u0628\u0627\u06cc\u062f Authentication \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f\u060c \u0628\u0639\u062f Authorization.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 Session \u0642\u062f\u06cc\u0645\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06af\u0630\u0634\u062a\u0647 \u0633\u0627\u06cc\u062a\u200c\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 Session \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0631\u062f\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 Login \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0633\u0631\u0648\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Session ID = 12345\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0633\u0627\u0632\u062f. \u0628\u0639\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0647\u0645\u0627\u0646 Session \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644 \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f: JWT.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JWT \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JWT \u0645\u062e\u0641\u0641:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JSON Web Token\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a. \u06cc\u06a9 Token \u0627\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0639\u062f \u0627\u0632 Login \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"token\":\n \"eyJhbGciOiJIUzI1...\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;token&quot;<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;eyJhbGciOiJIUzI1...&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Token \u0645\u062b\u0644 \u06a9\u0627\u0631\u062a \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u0648\u0642\u062a \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062c\u0631\u06cc\u0627\u0646 Login \u0628\u0627 JWT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644 \u0641\u0631\u0627\u06cc\u0646\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Android<br>\u2193<br>Username + Password<br>\u2193<br>PHP Login API<br>\u2193<br>\u0628\u0631\u0631\u0633\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a<br>\u2193<br>\u0633\u0627\u062e\u062a JWT<br>\u2193<br>\u0627\u0631\u0633\u0627\u0644 Token<br>\u2193<br>Android \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f<br>\u2193<br>\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0627 Token<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Backend \u0633\u0627\u062f\u0647 \u0628\u0627 PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u0641\u0627\u06cc\u0644 login.php \u062f\u0627\u0631\u06cc\u0645. \u062f\u0631 \u062d\u0627\u0644\u062a \u0648\u0627\u0642\u0639\u06cc \u0628\u0627\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0648\u0627\u0646\u062f\u0647 \u0634\u0648\u062f. \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;?php\n\n\nheader(\n\"Content-Type: application\/json\"\n);\n\n\n\n$username =\n$_POST&#91;\"username\"&#93;;\n\n\n$password =\n$_POST&#91;\"password\"&#93;;\n\n\n\nif(\n\n$username == \"ali\"\n\n&amp;&amp;\n\n$password == \"1234\"\n\n){\n\n\necho json_encode(&#91;\n\n\"success\"=>true,\n\n\"token\"=>\"abc123xyz\"\n\n&#93;);\n\n\n}\n\nelse{\n\n\necho json_encode(&#91;\n\n\"success\"=>false,\n\n\"message\"=>\"Wrong username\"\n\n&#93;);\n\n\n}\n\n\n\n?>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">?php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">header<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Content-Type: application\/json&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$username <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$_POST&#91;<\/span><span style=\"color: #032F62\">&quot;username&quot;<\/span><span style=\"color: #24292E\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$password <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$_POST&#91;<\/span><span style=\"color: #032F62\">&quot;password&quot;<\/span><span style=\"color: #24292E\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$username <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;ali&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">&amp;&amp;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">$password <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;1234&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">echo <\/span><span style=\"color: #6F42C1\">json_encode<\/span><span style=\"color: #24292E\">(&#91;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #005CC5\">true<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;token&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;abc123xyz&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">echo <\/span><span style=\"color: #6F42C1\">json_encode<\/span><span style=\"color: #24292E\">(&#91;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #005CC5\">false<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #032F62\">&quot;Wrong username&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">?<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username = ali\n\npassword = 1234\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0633\u062e:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"success\":true,\n \"token\":\"abc123xyz\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">true<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;token&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;abc123xyz&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JWT \u0648\u0627\u0642\u0639\u06cc \u0686\u06af\u0648\u0646\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc Token \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062a\u0635\u0627\u062f\u0641\u06cc \u0633\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a. JWT \u0633\u0647 \u0628\u062e\u0634 \u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Header.Payload.Signature\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xxxxx.yyyyy.zzzzz\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Header<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"alg\":\"HS256\",\n \"typ\":\"JWT\"\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Payload<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"userId\":15,\n \"name\":\"Ali\"\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Signature<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc Token \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 JWT \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0646\u0628\u0627\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0631\u0645\u0627\u0646\u0647 \u062f\u0627\u062e\u0644 Payload \u0642\u0631\u0627\u0631 \u0628\u062f\u0647\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"password\":\"123456\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;password&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;123456&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0635\u0641\u062d\u0647 Login \u062f\u0631 Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0633\u0645\u062a Android. \u0645\u062f\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class LoginRequest(\n\n    val username:String,\n\n    val password:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginRequest<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> username:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> password:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062f\u0644 \u067e\u0627\u0633\u062e:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class LoginResponse(\n\n    val success:Boolean,\n\n    val token:String?,\n\n    val message:String?\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginResponse<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success:<\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u0641\u0631\u0645 Login<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Composable\nfun LoginScreen(){\n\n\nvar username by remember {\n\n    mutableStateOf(\"\")\n\n}\n\n\nvar password by remember {\n\n    mutableStateOf(\"\")\n\n}\n\n\nColumn {\n\n\nTextField(\n\nvalue=username,\n\nonValueChange={\n\n    username = it\n\n}\n\n)\n\n\n\nTextField(\n\nvalue=password,\n\nonValueChange={\n\n    password = it\n\n}\n\n)\n\n\n\nButton(\n\nonClick={\n\n\n}\n\n){\n\nText(\n\"Login\"\n)\n\n}\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Composable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginScreen<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> username <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> password <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">remember<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">mutableStateOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Column<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">TextField<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">value=<\/span><span style=\"color: #24292E\">username,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onValueChange<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    username <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> it<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">TextField<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">value=<\/span><span style=\"color: #24292E\">password,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onValueChange<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    password <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> it<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Button<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">onClick<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Login&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a API \u0628\u0627 Retrofit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 API:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface AuthApi {\n\n\n@POST(\"login.php\")\nsuspend fun login(\n\n@Body request:LoginRequest\n\n):LoginResponse\n\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AuthApi<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">@POST<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;login.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">login<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">@Body<\/span><span style=\"color: #24292E\"> request:<\/span><span style=\"color: #6F42C1\">LoginRequest<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">LoginResponse<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 @POST \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">POST \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 GET \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 URL \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users.php?id=15\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0631 POST \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 Body \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\"username\":\"ali\",\n\"password\":\"1234\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;username&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;password&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;1234&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0645\u062b\u0644 Login \u0627\u0632 POST \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">ViewModel \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Login<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644 \u0642\u0628\u0644 UI \u0646\u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 API \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u062f. \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">LoginScreen<br>\u2193<br>LoginViewModel<br>\u2193<br>AuthRepository<br>\u2193<br>Retrofit<br>\u2193<br>PHP<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">LoginViewModel<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class LoginViewModel(\n\nprivate val repository:\nAuthRepository\n\n):ViewModel(){\n\n\n\nfun login(\n\nusername:String,\n\npassword:String\n\n){\n\n\nviewModelScope.launch {\n\n\nval response =\nrepository.login(\n\nLoginRequest(\nusername,\npassword\n)\n\n)\n\n\n\nif(response.success){\n\n\n}\n\n}\n\n\n\n}\n\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">AuthRepository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">login<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">username:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">password:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> response <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">repository.<\/span><span style=\"color: #6F42C1\">login<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">LoginRequest<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">username,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">password<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\">(response.success){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0636\u0639\u06cc\u062a Login<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644 \u062f\u0631\u0633 State \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06cc\u06a9 State \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class LoginState(\n\nval loading:Boolean = false,\n\nval success:Boolean = false,\n\nval error:String? = null\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginState<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> loading:<\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">false<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success:<\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">false<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> error:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UI \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u062f\u0627\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0627\u0633\u062a<\/li>\n\n\n\n<li>\u0645\u0648\u0641\u0642 \u0634\u062f\u0647<\/li>\n\n\n\n<li>\u062e\u0637\u0627 \u0631\u062e \u062f\u0627\u062f\u0647<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062f\u0631\u06cc\u0627\u0641\u062a Token<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Login \u0645\u0648\u0641\u0642 \u0634\u062f\u060c \u067e\u0627\u0633\u062e:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\"token\":\"abc123\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;token&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;abc123&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ViewModel:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if(response.success){\n\n    val token =\n    response.token\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\">(response.success){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    response.token<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 Token \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645. \u0641\u0639\u0644\u0627\u064b \u0641\u0642\u0637 \u0645\u0641\u0647\u0648\u0645 \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645. \u062f\u0631 \u062f\u0631\u0633 \u0628\u0639\u062f\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 Session \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648\u0636\u0639\u06cc\u062a Login \u0635\u062d\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Token \u062f\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0628\u0639\u062f \u0627\u0632 Login \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>profile.php\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u0645. \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0627\u0648\u0644 \u062b\u0627\u0628\u062a \u06a9\u0646 \u0686\u0647 \u06a9\u0633\u06cc \u0647\u0633\u062a\u06cc. \u067e\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Authorization:\n\nBearer abc123\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Header Authorization<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Retrofit:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@GET(\"profile.php\")\nsuspend fun profile(\n\n@Header(\"Authorization\")\ntoken:String\n\n):User\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@GET<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;profile.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">profile<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">@Header<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;Authorization&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">token:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">User<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Bearer abc123\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 Token \u0628\u0647\u062a\u0631 \u0627\u0632 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 Username \u0648 Password \u0627\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\"username\":\"ali\",\n\"password\":\"1234\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;username&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;password&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;1234&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0641\u0631\u0633\u062a\u062f. \u0645\u0634\u06a9\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u062f\u0627\u0645 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0645\u0646\u06cc\u062a \u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 \u0627\u0633\u062a.<br>\u0631\u0648\u0634 \u0628\u0647\u062a\u0631\u060c \u06cc\u06a9 \u0628\u0627\u0631 Login:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Password<br>\u2193<br>Token<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Token<br>\u2193<br>Requests<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 Login<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data\n\n \u251c\u2500\u2500 auth\n\n \u2502    \u251c\u2500\u2500 AuthApi.kt\n\n \u2502    \u251c\u2500\u2500 LoginRequest.kt\n\n \u2502    \u2514\u2500\u2500 LoginResponse.kt\n\n\ndomain\n\n \u2514\u2500\u2500 AuthRepository.kt\n\n\npresentation\n\n \u2514\u2500\u2500 login\n\n      \u251c\u2500\u2500 LoginScreen.kt\n\n      \u2514\u2500\u2500 LoginViewModel.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644<\/strong><strong> LoginRequest<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0627\u06cc\u062f \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0648 \u062f\u0627\u062e\u0644 \u0628\u062f\u0646\u0647\u200c\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0628\u0641\u0631\u0633\u062a\u06cc\u0645. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06cc\u06a9 \u0645\u062f\u0644 \u062c\u062f\u0627 \u0628\u0647 \u0646\u0627\u0645 LoginRequest \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class LoginRequest(\n\n\u00a0\u00a0\u00a0 val username: String,\n\n\u00a0\u00a0\u00a0 val password: String\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginRequest<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> username: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> password: <\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0631\u0648 \u0628\u0647 Retrofit \u0645\u06cc\u200c\u062f\u06cc\u0645\u060c Gson \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 JSON \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 ali \u0648 1234 \u0631\u0648 \u0648\u0627\u0631\u062f \u0628\u06a9\u0646\u0647\u060c \u0628\u062f\u0646\u0647\u200c\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\n\u00a0 \"username\": \"ali\",\n\n\u00a0 \"password\": \"1234\"\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 <\/span><span style=\"color: #032F62\">&quot;username&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #032F62\">&quot;ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 <\/span><span style=\"color: #032F62\">&quot;password&quot;<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #032F62\">&quot;1234&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0644\u06cc\u0644 \u0633\u0627\u062e\u062a\u0646 \u0627\u06cc\u0646 \u0645\u062f\u0644 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0631\u0633\u0627\u0644\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0634\u062e\u0635\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646 \u0648 \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u06cc\u0645 JSON \u0631\u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644<\/strong><strong> LoginResponse<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0628\u0639\u062f \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648\u0631\u0648\u062f \u0641\u0642\u0637 \u06cc\u06a9 \u062c\u0648\u0627\u0628 \u0628\u0644\u0647 \u06cc\u0627 \u062e\u06cc\u0631 \u0628\u0631\u0646\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647. \u0645\u0645\u06a9\u0646\u0647 Token\u060c \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0648 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0647\u0645 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u067e\u0627\u0633\u062e \u0631\u0648 \u0628\u0627 \u06cc\u06a9 \u0645\u062f\u0644 \u062c\u062f\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class LoginResponse(\n\n\u00a0\u00a0\u00a0 val success: Boolean,\n\n\u00a0\u00a0\u00a0 val token: String? = null,\n\n\u00a0\u00a0\u00a0 val expiresAt: Long? = null,\n\n\u00a0\u00a0\u00a0 val message: String? = null\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">LoginResponse<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success: <\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> expiresAt: <\/span><span style=\"color: #6F42C1\">Long<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u06cc\u0698\u06af\u06cc success \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0648\u0631\u0648\u062f \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c token \u06a9\u0627\u0631\u062a \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u0648\u0642\u062a \u06a9\u0627\u0631\u0628\u0631\u0647\u060c expiresAt \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627\u06cc Token \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 message \u0647\u0645 \u067e\u06cc\u0627\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u0627 \u062e\u0637\u0627\u06cc \u0633\u0631\u0648\u0631\u0647. \u0641\u06cc\u0644\u062f\u0647\u0627 Nullable \u0647\u0633\u062a\u0646 \u0686\u0648\u0646 \u062f\u0631 \u0648\u0631\u0648\u062f \u0646\u0627\u0645\u0648\u0641\u0642\u060c \u0637\u0628\u06cc\u0639\u062a\u0627\u064b Token \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a<\/strong><strong> ProfileUser <\/strong><strong>\u0648<\/strong><strong> ProfileResponse<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062f\u0648 \u0645\u062f\u0644 \u0633\u0627\u062e\u062a\u06cc\u0645. ProfileUser \u0641\u0642\u0637 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0648\u062f \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 ProfileResponse \u0646\u0645\u0627\u06cc\u0646\u062f\u0647\u200c\u06cc \u06a9\u0644 \u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class ProfileResponse(\n\n\u00a0 \u00a0\u00a0val success: Boolean,\n\n\u00a0\u00a0\u00a0 val data: ProfileUser? = null,\n\n\u00a0\u00a0\u00a0 val message: String? = null\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ProfileResponse<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 \u00a0\u00a0<\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> success: <\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">ProfileUser<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644\u0647 \u06a9\u0647 \u067e\u0627\u0633\u062e API \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062f\u0627\u062f\u0647\u200c\u06cc \u0627\u0635\u0644\u06cc\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u06af\u0631\u06cc \u0645\u062b\u0644 \u0646\u062a\u06cc\u062c\u0647\u200c\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0648 \u067e\u06cc\u0627\u0645 \u0633\u0631\u0648\u0631 \u0647\u0645 \u062f\u0627\u0631\u0647. \u0627\u06af\u0631 Token \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u0647\u060c data \u0628\u0631\u0627\u0628\u0631 null \u0645\u06cc\u0634\u0647 \u0648 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u062f\u0627\u062e\u0644 message \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/strong><strong> POST <\/strong><strong>\u0628\u0627 <\/strong><strong>@POST<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Login \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@POST(\"login.php\")\n\nsuspend fun login(...)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@POST<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;login.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">login<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">@POST \u0628\u0647 Retrofit \u0645\u06cc\u200c\u06af\u0647 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a POST \u0628\u0647 login.php \u0628\u0641\u0631\u0633\u062a\u0647. \u062a\u0641\u0627\u0648\u062a \u0645\u0647\u0645\u0634 \u0628\u0627 GET \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648\u0631\u0648\u062f \u062f\u0627\u062e\u0644 URL \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0646 \u0648 \u062f\u0627\u062e\u0644 Body \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646. \u0627\u0644\u0628\u062a\u0647 POST \u0628\u0647\u200c\u062a\u0646\u0647\u0627\u06cc\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTPS \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0631\u0633\u0627\u0644<\/strong><strong> JSON <\/strong><strong>\u0628\u0627 <\/strong><strong>@Body<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0646\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Body\n\nrequest: LoginRequest<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Body<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">request: <\/span><span style=\"color: #6F42C1\">LoginRequest<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">@Body \u0628\u0647 Retrofit \u0645\u06cc\u200c\u06af\u0647 \u0627\u06cc\u0646 Object \u0631\u0648 \u0628\u0647 \u0628\u062f\u0646\u0647\u200c\u06cc HTTP Request \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646. \u0686\u0648\u0646 Gson Converter \u0631\u0648 \u0642\u0628\u0644\u0627\u064b \u0628\u0647 Retrofit \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c LoginRequest \u0628\u0647 JSON \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0631\u0627\u06cc PHP \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0628\u062f\u0648\u0646 @Body\u060c Retrofit \u0646\u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u062f \u0627\u06cc\u0646 Object \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 \u0628\u062f\u0646\u0647\u200c\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>Response&lt;T&gt;<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 \u062e\u0631\u0648\u062c\u06cc Retrofit \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0634\u06a9\u0644 UserResponse \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Response&lt;LoginResponse><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">Response<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">LoginResponse<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc Login \u0641\u0642\u0637 \u0628\u062f\u0646\u0647\u200c\u06cc \u067e\u0627\u0633\u062e \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a\u061b \u06a9\u062f HTTP \u0647\u0645 \u0645\u0647\u0645\u0647. \u0628\u0627 Response \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0633\u0631\u0648\u0631 200\u060c 401\u060c 405 \u06cc\u0627 422 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u062f\u0647. \u062e\u0648\u062f LoginResponse \u0641\u0642\u0637 \u0645\u062d\u062a\u0648\u0627\u06cc JSON \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 Response&lt;LoginResponse&gt; \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0645\u0644 HTTP \u0631\u0648 \u0647\u0645 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u0645\u0648\u0646 \u0645\u06cc\u200c\u0630\u0627\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>isSuccessful<\/strong><strong>\u060c <\/strong><strong>body <\/strong><strong>\u0648 <\/strong><strong>code<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u067e\u0627\u0633\u062e Retrofit \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0647 \u0628\u062e\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>response.isSuccessful\n\nresponse.body()\n\nresponse.code()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">response.isSuccessful<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">response.<\/span><span style=\"color: #6F42C1\">body<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">response.<\/span><span style=\"color: #6F42C1\">code<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">isSuccessful \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u062f HTTP \u0628\u06cc\u0646 \u06f2\u06f0\u06f0 \u062a\u0627 \u06f2\u06f9\u06f9 \u0647\u0633\u062a \u06cc\u0627 \u0646\u0647. body \u0628\u062f\u0646\u0647\u200c\u06cc \u062a\u0628\u062f\u06cc\u0644\u200c\u0634\u062f\u0647\u200c\u06cc JSON \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 code \u062e\u0648\u062f \u06a9\u062f HTTP \u0645\u062b\u0644 401 \u06cc\u0627 422 \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u0645\u0648\u0646 \u0645\u06cc\u200c\u0630\u0627\u0631\u0647. \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a Repository \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0631\u0627\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u060c \u067e\u06cc\u0627\u0645 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u06cc \u0628\u0633\u0627\u0632\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u062f\u0647\u0627\u06cc 401\u060c 405 \u0648 422<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0647\u0631 \u06a9\u062f HTTP \u0645\u0639\u0646\u06cc \u0645\u0634\u062e\u0635\u06cc \u062f\u0627\u0631\u0647. 401 \u06cc\u0639\u0646\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0646\u0634\u062f\u0647 \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648\u0631\u0648\u062f \u0648 Token \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a. 405 \u06cc\u0639\u0646\u06cc Endpoint \u0628\u0627 \u0646\u0648\u0639 Request \u0627\u0634\u062a\u0628\u0627\u0647 \u0635\u062f\u0627 \u0632\u062f\u0647 \u0634\u062f\u0647\u061b \u0645\u062b\u0644\u0627\u064b login.php \u0628\u0627\u06cc\u062f POST \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u06a9\u0646\u0647. 422 \u06cc\u0639\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0646\u0638\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u0642\u0627\u0628\u0644 \u0641\u0647\u0645\u0647\u060c \u0627\u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0644\u0627\u0632\u0645 \u0645\u062b\u0644 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u0627\u062e\u0644\u0634 \u06a9\u0627\u0645\u0644 \u0646\u06cc\u0633\u062a. \u062e\u0648\u062f login.php \u0647\u0645 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0631\u0627\u0633\u0627\u0633 \u0647\u0645\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Header <\/strong><strong>\u0645\u0631\u0628\u0648\u0637 \u0628\u0647<\/strong><strong> Authorization<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Header(\"Authorization\")\n\nauthorization: String<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Header<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;Authorization&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">authorization: <\/span><span style=\"color: #6F42C1\">String<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0645\u0642\u062f\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 authorization \u062f\u0627\u062e\u0644 Header \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u0646\u0627\u0645 Authorization \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647. \u0628\u0631\u062e\u0644\u0627\u0641 \u0627\u0637\u0644\u0627\u0639\u0627\u062a Login\u060c Token \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Body \u06cc\u0627 URL \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647\u061b \u062f\u0631 Header \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f Authorization \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u062a\u0627 \u0633\u0631\u0648\u0631 \u0642\u0628\u0644 \u0627\u0632 \u062a\u062d\u0648\u06cc\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647\u060c \u0647\u0648\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0639\u0646\u06cc <\/strong><strong>Bearer $token<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Repository \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u0641\u0631\u0633\u062a\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;Bearer $token&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0645\u0647\u200c\u06cc Bearer \u0646\u0648\u0639 \u0631\u0648\u0634 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0627\u0648\u0646 \u062e\u0648\u062f Token \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0634\u06a9\u0644 \u0646\u0647\u0627\u06cc\u06cc Header \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0627\u06cc\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Authorization: Bearer eyJhbGciOiJIUzI1Ni&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0627\u0648\u0644 \u06a9\u0644\u0645\u0647\u200c\u06cc Bearer \u0631\u0648 \u062c\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u0631\u0634\u062a\u0647\u200c\u06cc JWT \u0631\u0648 \u0628\u0631\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 \u062e\u0648\u062f Token \u0628\u062f\u0648\u0646 \u067e\u06cc\u0634\u0648\u0646\u062f Bearer \u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u06cc \u06a9\u0647 Backend \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0647\u0645\u0627\u0647\u0646\u06af \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06cc\u06a9<\/strong><strong> Endpoint <\/strong><strong>\u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">profile.php \u0628\u062f\u0648\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a Token \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0646\u0645\u06cc\u200c\u062f\u0647. \u0627\u0628\u062a\u062f\u0627 Header \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647\u060c \u0628\u0639\u062f JWT \u0631\u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0639\u062a\u0628\u0631 \u0628\u0648\u062f\u0646 Token \u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0627\u06af\u0631 Token \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647 \u06cc\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u067e\u0627\u0633\u062e 401 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0647. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062f\u0631 \u0639\u0645\u0644 \u062a\u0641\u0627\u0648\u062a \u0628\u06cc\u0646 \u06cc\u06a9 API \u0639\u0645\u0648\u0645\u06cc \u0648 \u06cc\u06a9 API \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647 \u0631\u0648 \u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u062f\u0647. login.php \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 Token \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647\u060c \u0627\u0645\u0627 profile.php \u0641\u0642\u0637 \u0628\u0647 \u06a9\u0633\u06cc \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0648 Token \u0645\u0639\u062a\u0628\u0631 \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u06af\u0647\u062f\u0627\u0631\u06cc<\/strong><strong> Token <\/strong><strong>\u062f\u0627\u062e\u0644<\/strong><strong> LoginState<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0645\u0648\u0641\u0642\u060c Token \u0631\u0648 \u062f\u0627\u062e\u0644 State \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val token: String? = null<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0648\u0642\u062a\u06cc \u0645\u0642\u062f\u0627\u0631\u0634 null \u0627\u0633\u062a\u060c UI \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0648\u0642\u062a\u06cc Token \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0647\u060c \u0641\u0631\u0645 \u06a9\u0646\u0627\u0631 \u0645\u06cc\u0631\u0647 \u0648 \u062f\u06a9\u0645\u0647\u200c\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 Token \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 ViewModel \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u0634\u0647\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 Process \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u0647\u060c Token \u0647\u0645 \u067e\u0627\u06a9 \u0645\u06cc\u0634\u0647. \u0630\u062e\u06cc\u0631\u0647\u200c\u06cc \u062f\u0627\u0626\u0645\u06cc \u0648 \u0627\u0645\u0646 Token \u0645\u0648\u0636\u0648\u0639 \u062f\u0631\u0633 \u0628\u0639\u062f\u06cc\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0628\u0631\u0631\u0633\u06cc<\/strong><strong> Token <\/strong><strong>\u0628\u0627 <\/strong><strong>isNullOrBlank<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 success = true \u0628\u0631\u0627\u06cc \u0645\u0639\u062a\u0628\u0631 \u062f\u0627\u0646\u0633\u062a\u0646 \u067e\u0627\u0633\u062e \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u0628\u0627\u06cc\u062f \u0645\u0637\u0645\u0626\u0646 \u0628\u0634\u06cc\u0645 Token \u0648\u0627\u0642\u0639\u0627\u064b \u062f\u0627\u062e\u0644 \u067e\u0627\u0633\u062e \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">!receivedToken.isNullOrBlank()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0634\u0631\u0637 \u0647\u0645 null \u0628\u0648\u062f\u0646 \u0648 \u0647\u0645 \u062e\u0627\u0644\u06cc \u0628\u0648\u062f\u0646 Token \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 \u0633\u0631\u0648\u0631 \u0628\u0647\u200c\u0627\u0634\u062a\u0628\u0627\u0647 \u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642 \u0628\u062f\u0647 \u0648\u0644\u06cc Token \u0646\u0641\u0631\u0633\u062a\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0648\u0627\u0631\u062f\u0634\u062f\u0647 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644<\/strong><strong> Token <\/strong><strong>\u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0627\u0628\u0639 loadProfile \u0627\u0628\u062a\u062f\u0627 \u0645\u0642\u062f\u0627\u0631 Token \u0631\u0648 \u0627\u0632 State \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645 \u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (currentToken.isNullOrBlank()) {\n\n\u00a0\u00a0\u00a0 return\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (currentToken.<\/span><span style=\"color: #6F42C1\">isNullOrBlank<\/span><span style=\"color: #24292E\">()) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">return<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Token \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0627\u0635\u0644\u0627\u064b \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0628\u06a9\u0647 \u0627\u0631\u0633\u0627\u0644 \u0646\u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u062c\u0644\u0648\u06cc \u06cc\u06a9 Request \u0628\u06cc\u200c\u0641\u0627\u06cc\u062f\u0647 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0647\u0645 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u06af\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0648\u0627\u0631\u062f \u062d\u0633\u0627\u0628 \u0628\u0634\u0647. \u0627\u0644\u0628\u062a\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u0635\u0644\u06cc \u0627\u0645\u0646\u06cc\u062a \u0647\u0645\u0686\u0646\u0627\u0646 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647\u061b \u0686\u0648\u0646 \u0648\u0636\u0639\u06cc\u062a \u062f\u0627\u062e\u0644 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0627\u0645\u0644 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0633\u0627\u0628 \u0628\u0627 \u0633\u0627\u062e\u062a\u0646<\/strong><strong> State <\/strong><strong>\u062c\u062f\u06cc\u062f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">_state.value = LoginState()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 LoginState \u062c\u062f\u06cc\u062f \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u062a\u0645\u0627\u0645 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u0628\u0647 \u062d\u0627\u0644\u062a \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u06af\u0631\u062f\u0646\u061b \u06cc\u0639\u0646\u06cc Token\u060c \u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u060c \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0648 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u067e\u0627\u06a9 \u0628\u0634\u0646. \u0686\u0648\u0646 \u0646\u0645\u0627\u06cc\u0634 \u0635\u0641\u062d\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 State \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647\u060c Compose \u0645\u062a\u0648\u062c\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062e\u0648\u0627\u0646\u062f\u0646<\/strong><strong> JSON <\/strong><strong>\u062f\u0631<\/strong><strong> PHP <\/strong><strong>\u0628\u0627 <\/strong><strong>php:\/\/input<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648\u0631\u0648\u062f \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 JSON \u062f\u0627\u062e\u0644 Body \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u062f\u0631 PHP \u0627\u06cc\u0646 JSON \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">file_get_contents(&#8220;php:\/\/input&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php:\/\/input \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0628\u062f\u0646\u0647\u200c\u06cc \u062e\u0627\u0645 Request \u0631\u0648 \u0645\u06cc\u200c\u062f\u0647. \u0628\u0639\u062f \u0628\u0627 json_decode(&#8230;, true) \u0645\u062a\u0646 JSON \u0628\u0647 \u0622\u0631\u0627\u06cc\u0647\u200c\u06cc PHP \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0647. \u0645\u0642\u062f\u0627\u0631 true \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u062e\u0631\u0648\u062c\u06cc \u0628\u0647 \u0634\u06a9\u0644 Associative Array \u0628\u0627\u0634\u0647 \u0648 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0628\u0627 \u0639\u0628\u0627\u0631\u062a\u06cc \u0645\u062b\u0644 $requestBody[&#8220;username&#8221;] \u0628\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0628\u062f\u0646\u0647 \u062e\u0627\u0644\u06cc \u06cc\u0627 JSON \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u0647\u060c Backend \u067e\u0627\u0633\u062e \u062e\u0637\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627<\/strong><strong> Hash <\/strong><strong>\u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Backend \u0631\u0645\u0632 \u0648\u0627\u0642\u0639\u06cc 1234 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u062f\u0627\u062e\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0648 \u0641\u0642\u0637 Hash \u0627\u0648\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647. \u0628\u0639\u062f \u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u06cc\u0633\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>password_verify(\n\n\u00a0\u00a0\u00a0 $password,\n\n\u00a0\u00a0\u00a0 $practiceUser&#91;\"passwordHash\"&#93;\n\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">password_verify<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 $password,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 $practiceUser&#91;<\/span><span style=\"color: #032F62\">&quot;passwordHash&quot;<\/span><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">password_verify \u0631\u0645\u0632\u06cc \u0631\u0648 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0628\u0627 Hash \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u06cc\u0639\u0646\u06cc \u062d\u062a\u06cc \u0633\u0631\u0648\u0631 \u0647\u0645 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0645\u062a\u0646 \u0627\u0635\u0644\u06cc \u0631\u0645\u0632 \u0631\u0648 \u0646\u06af\u0647 \u062f\u0627\u0631\u0647. \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u0647\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0627\u06cc\u062f Hash \u0631\u0645\u0632 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u0628\u06a9\u0646\u0647\u060c \u0646\u0647 \u062e\u0648\u062f \u0631\u0645\u0632 \u0631\u0648.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>JWT_SECRET<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u06cc JWT \u06cc\u06a9 Secret \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>define(\n\n\u00a0\u00a0\u00a0 \"JWT_SECRET\",\n\n\u00a0\u00a0\u00a0 \"...\"\n\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">define<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;JWT_SECRET&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;...&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Secret \u0645\u062b\u0644 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0636\u0627\u06cc \u0633\u0631\u0648\u0631\u0647. \u0633\u0631\u0648\u0631 \u0628\u0627 \u0627\u0648\u0646 Signature \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647 \u0648 \u0647\u0646\u06af\u0627\u0645 \u062f\u0631\u06cc\u0627\u0641\u062a Token \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627 \u0647\u0645\u0627\u0646 Secret \u0627\u0645\u0636\u0627 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0646\u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647\u060c \u0686\u0648\u0646 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 APK \u0628\u0627\u0634\u0647 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0627\u0633\u062a. \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u0628\u0647\u062a\u0631\u0647 Secret \u0627\u0632 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u06cc\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0645\u0646 \u0633\u0631\u0648\u0631 \u062e\u0648\u0646\u062f\u0647 \u0628\u0634\u0647\u060c \u0646\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0639\u0645\u0648\u0645\u06cc \u0646\u0648\u0634\u062a\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>JWT_ISSUER<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u062f\u0627\u0631 JWT_ISSUER \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0686\u0647 \u0633\u06cc\u0633\u062a\u0645\u06cc Token \u0631\u0648 \u0635\u0627\u062f\u0631 \u06a9\u0631\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>define(\n\n\u00a0\u00a0\u00a0 \"JWT_ISSUER\",\n\u00a0\u00a0\u00a0 \"helloiman-api\"\n\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">define<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;JWT_ISSUER&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;helloiman-api&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u062e\u0644 Payload \u0628\u0627 \u06a9\u0644\u06cc\u062f iss \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u0631\u0633\u06cc Token\u060c \u0633\u0631\u0648\u0631 \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc\u0634\u0647 Token \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u0647\u0645\u06cc\u0646 API \u0627\u0633\u062a\u060c \u0646\u0647 Token\u0627\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0633\u06cc\u0633\u062a\u0645 \u062f\u06cc\u06af\u0631\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>JWT_TTL<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 JWT_TTL \u0645\u062f\u062a \u0627\u0639\u062a\u0628\u0627\u0631 Token \u0631\u0648 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>define(\n\n\u00a0\u00a0\u00a0 \"JWT_TTL\",\n\u00a0\u00a0\u00a0 3600\n\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">define<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;JWT_TTL&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">3600<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u062f\u062f 3600 \u06cc\u0639\u0646\u06cc Token \u0627\u0632 \u0632\u0645\u0627\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646\u060c \u06cc\u06a9 \u0633\u0627\u0639\u062a \u0645\u0639\u062a\u0628\u0631\u0647. \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0628\u0639\u062f \u0627\u0632 \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0627\u0648\u0646 \u0632\u0645\u0627\u0646\u060c \u062d\u062a\u06cc \u0627\u06af\u0631 Signature \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u0647\u060c Token \u062f\u06cc\u06af\u0647 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Payload <\/strong><strong>\u0648<\/strong><strong> Claim<\/strong><strong>\u0647\u0627\u06cc<\/strong><strong> JWT<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Payload \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;iss&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;sub&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;iat&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;exp&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;username&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;name&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;role&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">iss \u0635\u0627\u062f\u0631\u06a9\u0646\u0646\u062f\u0647 Token \u0627\u0633\u062a\u060c sub \u0634\u0646\u0627\u0633\u0647\u200c\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c iat \u0632\u0645\u0627\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646 Token \u0648 exp \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627\u06cc \u0627\u0648\u0646 \u0627\u0633\u062a. \u0646\u0627\u0645 \u0648 \u0646\u0642\u0634 \u06a9\u0627\u0631\u0628\u0631 \u0647\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u062f\u0627\u062e\u0644 Payload \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646. \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 Payload \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647\u060c \u0686\u0648\u0646 JWT \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0645\u0636\u0627 \u0634\u062f\u0647 \u0627\u0645\u0627 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc Header \u0648 Payload \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0647\u200c\u0628\u062e\u0634\u06cc<\/strong><strong> JWT<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">JWT \u0627\u0632 \u0633\u0647 \u0642\u0633\u0645\u062a \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Header.Payload.Signature<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Backend\u060c Header \u0648 Payload \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0647 Base64 URL \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0646\u060c \u0628\u0639\u062f \u0628\u0627 \u0646\u0642\u0637\u0647 \u0628\u0647 \u0647\u0645 \u0645\u06cc\u200c\u0686\u0633\u0628\u0646 \u0648 Signature \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0627\u0648\u0646\u200c\u0647\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u0634\u0647. \u062e\u0631\u0648\u062c\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0647\u0645\u0648\u0646 \u0631\u0634\u062a\u0647\u200c\u06cc \u0628\u0644\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0639\u062f \u0627\u0632 Login \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a<\/strong><strong> Base64 URL <\/strong><strong>\u0628\u0627<\/strong><strong> Base64 <\/strong><strong>\u0645\u0639\u0645\u0648\u0644\u06cc<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">JWT \u0627\u0632 \u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0627\u0632 Base64 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 \u062f\u0627\u062e\u0644 URL \u0648 Header \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u0647. \u062f\u0631 \u062a\u0627\u0628\u0639 base64UrlEncode \u0639\u0644\u0627\u0645\u062a\u200c\u0647\u0627\u06cc + \u0648 \/ \u0628\u0627 &#8211; \u0648 _ \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u0634\u0646 \u0648 \u0639\u0644\u0627\u0645\u062a\u200c\u0647\u0627\u06cc = \u0627\u0646\u062a\u0647\u0627\u06cc \u0631\u0634\u062a\u0647 \u062d\u0630\u0641 \u0645\u06cc\u0634\u0646. \u062a\u0627\u0628\u0639 Decode \u0647\u0645 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0648 \u0628\u0631\u0639\u06a9\u0633 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646\u0647 \u06a9\u0647 Token \u0628\u062f\u0648\u0646 \u062f\u0631\u062f\u0633\u0631 \u062f\u0627\u062e\u0644 Header\u0647\u0627\u06cc HTTP \u062c\u0627\u0628\u0647\u200c\u062c\u0627 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> Signature <\/strong><strong>\u0628\u0627<\/strong><strong> HS256<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0627\u0645\u0636\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hash_hmac(\n\"sha256\",\n\n&nbsp;&nbsp;&nbsp; $signingInput,\n\n&nbsp;&nbsp;&nbsp; JWT_SECRET,\n\n&nbsp;&nbsp;&nbsp; true\n\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">signingInput \u0627\u0632 Header \u0648 Payload \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u0628\u0627 JWT_SECRET \u0627\u0645\u0636\u0627 \u0645\u06cc\u0634\u0647. \u0627\u06af\u0631 \u06a9\u0633\u06cc \u062d\u062a\u06cc \u06cc\u06a9 \u062d\u0631\u0641 \u0627\u0632 Payload \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u060c \u0627\u0645\u0636\u0627\u06cc \u062c\u062f\u06cc\u062f \u0628\u0627 Signature \u0642\u0628\u0644\u06cc \u0628\u0631\u0627\u0628\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u0633\u0631\u0648\u0631 Token \u0631\u0648 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 Signature \u0645\u0627\u0646\u0639 \u062f\u06cc\u062f\u0647 \u0634\u062f\u0646 Payload \u0646\u0645\u06cc\u0634\u0647\u061b \u0641\u0642\u0637 \u0627\u062c\u0627\u0632\u0647 \u0646\u0645\u06cc\u200c\u062f\u0647 Token \u0628\u062f\u0648\u0646 \u0627\u0637\u0644\u0627\u0639 \u0633\u0631\u0648\u0631 \u062f\u0633\u062a\u200c\u06a9\u0627\u0631\u06cc \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc<\/strong><strong> JWT<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0627\u0628\u0639 verifyJwt \u0627\u0628\u062a\u062f\u0627 Token \u0628\u0627 \u0646\u0642\u0637\u0647 \u0628\u0647 \u0633\u0647 \u0642\u0633\u0645\u062a \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc\u0634\u0647. \u0628\u0639\u062f Header\u060c Payload \u0648 Signature Decode \u0645\u06cc\u0634\u0646. \u0633\u0631\u0648\u0631 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 HS256 \u0628\u0627\u0634\u0647\u060c Signature \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647\u060c \u0635\u0627\u062f\u0631\u06a9\u0646\u0646\u062f\u0647 \u0631\u0648 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u062f\u0631 \u0622\u062e\u0631 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0631\u0648 \u0645\u06cc\u200c\u0633\u0646\u062c\u0647. \u0627\u06af\u0631 \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u0647\u060c \u062a\u0627\u0628\u0639 null \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u062f \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>hash_equals<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u06cc\u0633\u0647\u200c\u06cc Signature \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0628\u0627 Signature \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>hash_equals(\n\n\u00a0\u00a0\u00a0 $expectedSignature,\n\u00a0\u00a0\u00a0 $receivedSignature\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">hash_equals<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 $expectedSignature,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 $receivedSignature<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0646\u0638\u0631 \u0638\u0627\u0647\u0631\u06cc \u0645\u06cc\u200c\u0634\u062f \u0627\u0632 === \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u060c \u0627\u0645\u0627 hash_equals \u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u06cc\u0633\u0647\u200c\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0645\u062a\u0631\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0645\u0642\u0627\u06cc\u0633\u0647 \u0644\u0648 \u0628\u0631\u0647. \u0627\u06af\u0631 \u062f\u0648 Signature \u0628\u0631\u0627\u0628\u0631 \u0646\u0628\u0627\u0634\u0646\u060c Token \u062f\u0633\u062a\u200c\u06a9\u0627\u0631\u06cc \u0634\u062f\u0647 \u06cc\u0627 \u0628\u0627 Secret \u062f\u06cc\u06af\u0631\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0631\u06cc\u0627\u0641\u062a<\/strong><strong> Bearer Token <\/strong><strong>\u062f\u0631<\/strong><strong> PHP<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 getBearerToken \u0627\u0628\u062a\u062f\u0627 \u062f\u0646\u0628\u0627\u0644 Header \u0632\u06cc\u0631 \u0645\u06cc\u200c\u06af\u0631\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Authorization: Bearer TOKEN<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 PHP \u0627\u06cc\u0646 Header \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 $_SERVER[&#8220;HTTP_AUTHORIZATION&#8221;] \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0686\u0648\u0646 \u0628\u0639\u0636\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Apache \u0627\u0648\u0646 \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 PHP \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc\u200c\u062f\u0646\u060c \u06a9\u062f \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0647\u0645 \u0628\u0627 apache_request_headers() \u062f\u0627\u0631\u0647. \u0628\u0639\u062f \u0628\u0627 \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0645\u0646\u0638\u0645\u060c \u06a9\u0644\u0645\u0647\u200c\u06cc Bearer \u062c\u062f\u0627 \u0645\u06cc\u0634\u0647 \u0648 \u0641\u0642\u0637 \u062e\u0648\u062f Token \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0627\u0632<\/strong><strong> Payload <\/strong><strong>\u062a\u0623\u06cc\u06cc\u062f\u0634\u062f\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 JWT \u0645\u0639\u062a\u0628\u0631 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c profile.php \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0627\u0632 Payload \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$profile = [\n\n\u00a0\u00a0\u00a0 \"id\" => (int) $payload&#91;\"sub\"&#93;,\n\n\u00a0\u00a0\u00a0 \"username\" => $payload&#91;\"username\"&#93;,\n\n\u00a0\u00a0\u00a0 \"name\" => $payload&#91;\"name\"&#93;,\n\n\u00a0\u00a0\u00a0 \"role\" => $payload&#91;\"role\"&#93;\n\n];<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">$profile <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> [<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> (int) $payload&#91;<\/span><span style=\"color: #032F62\">&quot;sub&quot;<\/span><span style=\"color: #24292E\">&#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;username&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> $payload&#91;<\/span><span style=\"color: #032F62\">&quot;username&quot;<\/span><span style=\"color: #24292E\">&#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> $payload&#91;<\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">&#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;role&quot;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><span style=\"color: #24292E\"> $payload&#91;<\/span><span style=\"color: #032F62\">&quot;role&quot;<\/span><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">];<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0641\u0642\u0637 \u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0645\u0648\u0641\u0642 verifyJwt \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647. \u06cc\u0639\u0646\u06cc \u0633\u0631\u0648\u0631 \u0627\u0648\u0644 \u0627\u0639\u062a\u0628\u0627\u0631 Token \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647 \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f1<br>Session Management<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0686\u0637\u0648\u0631 Login \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0633\u0631\u0648\u0631 \u0686\u0637\u0648\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 JWT Token \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u0645\u0627 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u06cc\u0645. \u0641\u0631\u0636 \u06a9\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0645\u06cc\u200c\u0628\u0646\u062f\u062f \u0648 \u0641\u0631\u062f\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0644\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u06a9\u062c\u0627 \u0628\u0641\u0647\u0645\u062f \u06a9\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0642\u0628\u0644\u0627\u064b \u0648\u0627\u0631\u062f \u0634\u062f\u0647\u061f<\/li>\n\n\n\n<li>\u0647\u0646\u0648\u0632 Token \u0645\u0639\u062a\u0628\u0631 \u062f\u0627\u0631\u062f\u061f<\/li>\n\n\n\n<li>\u0628\u0627\u06cc\u062f \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0628\u062f\u0647\u062f \u06cc\u0627 \u0635\u0641\u062d\u0647 Login\u061f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u0641\u0647\u0648\u0645 <strong>Session Management<\/strong> \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Session \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Session \u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0645\u062b\u0644\u0627\u064b \u0628\u0639\u062f \u0627\u0632 Login:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Username + Password\n\n\u2193\n\nServer\n\n\u2193\n\nJWT Token\n\n\u2193\n\nSave Token\n\n\u2193\n\nUser Logged In\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u0628\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App Start\n\n\u2193\n\nCheck Token\n\n\u2193\n\nToken \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a\u061f\n\n\u2193\n\n\u0628\u0644\u0647 \u2192 \u0648\u0631\u0648\u062f \u0628\u0647 Home\n\n\u062e\u06cc\u0631 \u2192 \u0646\u0645\u0627\u06cc\u0634 Login\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644 Session<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Login Screen\n\n\u2193\n\nSend Credentials\n\n\u2193\n\nReceive Token\n\n\u2193\n\nSave Token\n\n\u2193\n\nClose App\n\n\u2193\n\nOpen App Again\n\n\u2193\n\nRead Token\n\n\u2193\n\nCheck Session\n\n\u2193\n\nGo To Home\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 \u0648\u0636\u0639\u06cc\u062a Login<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a Token \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062c\u0627\u06cc\u06cc \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645. \u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0686\u0646\u062f \u0631\u0648\u0634 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SharedPreferences<\/li>\n\n\n\n<li>DataStore<\/li>\n\n\n\n<li>Encrypted DataStore<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0639\u0644\u0627\u064b \u0628\u0627 DataStore \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645 \u0686\u0648\u0646 \u0631\u0648\u0634 \u062c\u062f\u06cc\u062f\u062a\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 DataStore<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Gradle:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n    \"androidx.datastore:datastore-preferences:1.1.1\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;androidx.datastore:datastore-preferences:1.1.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Token Storage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0633\u0627\u0632 TokenStorage.kt \u0648 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u062f\u0627\u062e\u0644\u0634 \u0648\u0627\u0631\u062f \u06a9\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class TokenStorage(\n\n    private val context:Context\n\n){\n\n    private val dataStore =\n        context.createDataStore(\n            name = \"session\"\n        )\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">TokenStorage<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> context:<\/span><span style=\"color: #6F42C1\">Context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dataStore <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        context.<\/span><span style=\"color: #6F42C1\">createDataStore<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;session&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u062f\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0630\u062e\u06cc\u0631\u0647 Token \u0641\u0642\u0637 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u0634\u062f. \u0646\u0647 \u062f\u0627\u062e\u0644 ViewModel.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 Token<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0628\u0639\u062f \u0627\u0632 Login \u0645\u0648\u0641\u0642:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun saveToken(\n    token:String\n){\n\n    dataStore.edit { preferences ->\n\n\n        preferences&#91;TOKEN_KEY&#93;\n            =\n            token\n\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">saveToken<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    token:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    dataStore.<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\"> { preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        preferences&#91;TOKEN_KEY&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            token<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 TOKEN_KEY \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 Token \u0628\u0627 \u0622\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Token Key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val TOKEN_KEY =\n    stringPreferencesKey(\n        \"jwt_token\"\n    )\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> TOKEN_KEY <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">stringPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;jwt_token&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062f\u0627\u062e\u0644 DataStore:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jwt_token\n\n\u2193\n\neyJhbGc...\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062e\u0648\u0627\u0646\u062f\u0646 Token<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getToken():\n\nString?\n{\n\n    return dataStore.data\n        .map {\n\n            preferences ->\n\n            preferences&#91;TOKEN_KEY&#93;\n\n        }\n        .first()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getToken<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">String?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> dataStore.<\/span><span style=\"color: #D73A49\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            preferences&#91;TOKEN_KEY&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">first<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Token \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f eyJhbGc&#8230; \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f \u0648 \u0627\u06af\u0631 \u0646\u0628\u0627\u0634\u062f null<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a SessionManager<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u062a\u0645\u0627\u0645 \u0645\u0646\u0637\u0642 Session \u06cc\u06a9 \u062c\u0627 \u0628\u0627\u0634\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SessionManager.kt<\/code><\/pre>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class SessionManager(\n\n    private val tokenStorage:\n    TokenStorage\n\n){\n\n\nsuspend fun isLoggedIn():\n\nBoolean{\n\n\n    return tokenStorage\n        .getToken()\n        != null\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">SessionManager<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> tokenStorage:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    TokenStorage<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">isLoggedIn<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> tokenStorage<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">getToken<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">!=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u062c\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0628\u0641\u0647\u0645\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0631\u062f \u0634\u062f\u0647 sessionManager.isLoggedIn \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc\u200c\u0632\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Logout<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Logout \u06cc\u0639\u0646\u06cc Token \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun logout(){\n\n    dataStore.edit {\n\n        preferences ->\n\n        preferences.remove(\n            TOKEN_KEY\n        )\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">logout<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    dataStore.<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        preferences.<\/span><span style=\"color: #6F42C1\">remove<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            TOKEN_KEY<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Logout:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Token<br>\u2193<br>Delete<br>\u2193<br>User Logged Out<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">User State \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0641\u0642\u0637 Token \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a. \u0645\u0627 \u06cc\u06a9 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u0631\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class UserState(\n\n    val isLoggedIn:Boolean,\n\n    val token:String?\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserState<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> isLoggedIn:<\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0648\u0636\u0639\u06cc\u062a \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0644\u0627\u0646 \u062f\u0631 \u0686\u0647 \u0634\u0631\u0627\u06cc\u0637\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a AuthViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9 ViewModel \u0645\u062e\u0635\u0648\u0635 Authentication \u062f\u0627\u0631\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class AuthViewModel(\n\nprivate val sessionManager:\nSessionManager\n\n):ViewModel(){\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AuthViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> sessionManager:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">SessionManager<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0647\u0627\u06cc \u0622\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0631\u0631\u0633\u06cc Login \u0628\u0648\u062f\u0646<\/li>\n\n\n\n<li>Logout<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a User State<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">App Startup Check<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a\u200c\u0647\u0627 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u0648\u0644 \u0646\u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 Login Screen \u0631\u0627 \u0646\u0634\u0627\u0646 \u0628\u062f\u0647\u06cc\u0645. \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645. \u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App Start\n\n\u2193\n\nAuth Check\n\n\u2193\n\nToken Exists\u061f\n\n\u2193\n\nYes \u2192 Home\n\nNo \u2192 Login\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Splash \/ Startup Screen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 State \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class StartDestination{\n\n\nobject Loading:\nStartDestination()\n\n\nobject Login:\nStartDestination()\n\n\nobject Home:\nStartDestination()\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">sealed<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">StartDestination<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Loading<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">StartDestination<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Login<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">StartDestination<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Home<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">StartDestination<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ViewModel:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun checkSession(){\n\n\nviewModelScope.launch {\n\n\nval loggedIn =\nsessionManager\n.isLoggedIn()\n\n\n\nif(loggedIn){\n\n\n_state.value =\nStartDestination.Home\n\n\n}\n\nelse{\n\n\n_state.value =\nStartDestination.Login\n\n\n}\n\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">checkSession<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> loggedIn <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">sessionManager<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">isLoggedIn<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\">(loggedIn){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">StartDestination.Home<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">StartDestination.Login<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 Navigation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when(state){\n\n\nHome -> {\n\nnavController.navigate(\n\"home\"\n)\n\n}\n\n\n\nLogin -> {\n\n\nnavController.navigate(\n\"login\"\n)\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(state){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Home <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">navController.<\/span><span style=\"color: #6F42C1\">navigate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;home&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Login <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">navController.<\/span><span style=\"color: #6F42C1\">navigate<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;login&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0642\u0628\u0644\u0627\u064b \u0648\u0627\u0631\u062f \u0634\u062f\u0647. \u062f\u0641\u0639\u0647 \u0627\u0648\u0644:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Login<br>\u2193<br>Token \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u0634\u0648\u062f<br>\u2193<br>Token \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u0632 \u0628\u0639\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647<br>\u2193<br>\u0628\u0631\u0631\u0633\u06cc Token<br>\u2193<br>Token \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f<br>\u2193<br>\u0648\u0631\u0648\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0642\u06cc\u0645\u062a\u200c\u0647\u0627<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0631\u0628\u0631 \u062d\u062a\u06cc \u0635\u0641\u062d\u0647 Login \u0631\u0627 \u0646\u0645\u06cc\u200c\u0628\u06cc\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 \u0627\u0645\u0646\u06cc\u062a\u06cc Token<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0645\u0639\u0645\u0648\u0644\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0627\u0645\u0644 \u0646\u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633\u200c\u062a\u0631 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 Encrypted DataStore \u06cc\u0627 Encrypted SharedPreferences \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0686\u0648\u0646 Token \u0645\u062b\u0644 \u06a9\u0644\u06cc\u062f \u0648\u0631\u0648\u062f \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a. \u0627\u06af\u0631 \u06a9\u0633\u06cc \u0622\u0646 \u0631\u0627 \u0628\u062f\u0632\u062f\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062a\u0648\u0627\u0646\u062f \u062e\u0648\u062f\u0634 \u0631\u0627 \u062c\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062c\u0627 \u0628\u0632\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 Session<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u067e\u0631\u0648\u0698\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n\u251c\u2500\u2500 data\n\n\u2502   \u251c\u2500\u2500 auth\n\n\u2502   \u2502    \u251c\u2500\u2500 TokenStorage.kt\n\n\u2502   \u2502    \u2514\u2500\u2500 SessionManager.kt\n\n\n\u251c\u2500\u2500 presentation\n\n\u2502   \u251c\u2500\u2500 login\n\n\u2502   \u2502    \u2514\u2500\u2500 LoginViewModel.kt\n\n\u2502   \u2502\n\u2502   \u2514\u2500\u2500 startup\n\n\u2502        \u2514\u2500\u2500 AuthViewModel.kt\n\n\n\u2514\u2500\u2500 navigation\n\n    \u2514\u2500\u2500 AppNavigation.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0648\u0627\u0628\u0633\u062a\u06af\u06cc DataStore<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Token \u0628\u0639\u062f \u0627\u0632 \u0628\u0633\u062a\u0647\u200c\u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0646\u0631\u0647\u060c \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0648 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0 \u00a0\u00a0\"androidx.datastore:datastore-preferences:1.2.1\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0 \u00a0\u00a0<\/span><span style=\"color: #032F62\">&quot;androidx.datastore:datastore-preferences:1.2.1&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 Token \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 ViewModel \u0628\u0648\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 \u0628\u0633\u062a\u0647\u200c\u0634\u062f\u0646 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u062f. DataStore \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0627\u0645\u0631\u0648\u0632 \u0648\u0627\u0631\u062f \u0628\u0634\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u0628\u0628\u0646\u062f\u0647 \u0648 \u0641\u0631\u062f\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u062f\u0648\u0646 \u062f\u06cc\u062f\u0646 \u0641\u0631\u0645 Login \u0648\u0627\u0631\u062f \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> DataStore <\/strong><strong>\u0628\u0627 <\/strong><strong>preferencesDataStore<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc Session \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val Context.sessionDataStore by\n\n\u00a0\u00a0\u00a0 preferencesDataStore(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name = \"session\"\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> Context.sessionDataStore <\/span><span style=\"color: #D73A49\">by<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">preferencesDataStore<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;session&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062f \u06cc\u06a9 DataStore \u0628\u0647 \u0646\u0627\u0645 session \u0645\u06cc\u200c\u0633\u0627\u0632\u0647 \u0648 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 Context \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u0647\u0631 \u062c\u0627 Context \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0627 context.sessionDataStore \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 DataStore \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062a\u0645\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0648 \u062e\u0648\u0627\u0646\u062f\u0646 Token \u0627\u0632 \u0647\u0645\u0627\u0646 \u0646\u0645\u0648\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> DataStore <\/strong><strong>\u0631\u0627 \u0628\u06cc\u0631\u0648\u0646 \u06a9\u0644\u0627\u0633 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0631\u0648 \u0628\u06cc\u0631\u0648\u0646 TokenStorage \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val Context.sessionDataStore by\n\n\u00a0\u00a0\u00a0 preferencesDataStore(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name = \"session\"\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> Context.sessionDataStore <\/span><span style=\"color: #D73A49\">by<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">preferencesDataStore<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;session&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 DataStore \u0646\u0628\u0627\u06cc\u062f \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0645\u062e\u062a\u0644\u0641 \u0633\u0627\u062e\u062a\u0647 \u0628\u0634\u0647. \u0627\u06af\u0631 \u0647\u0631 \u0628\u0627\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0644\u0627\u0633 \u06cc\u0627 \u062a\u0627\u0628\u0639 \u06cc\u06a9 DataStore \u062a\u0627\u0632\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u0645\u0645\u06a9\u0646\u0647 \u0686\u0646\u062f \u0628\u062e\u0634 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u062e\u0648\u0627\u0646 \u0628\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u0646 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u062e\u0637\u0627 \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0628\u0634\u0647. \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0646\u0634 \u062f\u0631 \u0633\u0637\u062d \u0641\u0627\u06cc\u0644\u060c \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0645\u0634\u062a\u0631\u06a9 \u0628\u0631\u0627\u06cc Session \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc<\/strong><strong> Token <\/strong><strong>\u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u06a9\u0644\u06cc\u062f \u0648 \u0645\u0642\u062f\u0627\u0631 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u062f\u0648 \u06a9\u0644\u06cc\u062f \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val tokenKey =\n\n\u00a0\u00a0\u00a0 stringPreferencesKey(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"jwt_token\"\n\n\u00a0\u00a0\u00a0 )\n\nprivate val expiresAtKey =\n\n\u00a0\u00a0\u00a0 longPreferencesKey(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"jwt_expires_at\"\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> tokenKey <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">stringPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;jwt_token&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> expiresAtKey <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">longPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;jwt_expires_at&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">tokenKey \u0645\u062e\u0635\u0648\u0635 \u0645\u062a\u0646 JWT \u0627\u0633\u062a \u0648 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0632 stringPreferencesKey \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. expiresAtKey \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u0639\u062f\u062f Long \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0648\u0646 \u0627\u0632 longPreferencesKey \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u0633\u0645\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 jwt_token \u0647\u0645\u0648\u0646 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u0628\u0627 \u0627\u0648\u0646\u200c\u0647\u0627 \u062f\u0627\u062e\u0644 DataStore \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 <\/strong><strong>StoredSession<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Token \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627\u0634 \u0631\u0648 \u0628\u0627 \u0647\u0645 \u062c\u0627\u0628\u0647\u200c\u062c\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0645\u062f\u0644 \u0631\u0648 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class StoredSession(\n\n\u00a0\u00a0\u00a0 val token: String,\n\n\u00a0\u00a0\u00a0 val expiresAt: Long\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">StoredSession<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> expiresAt: <\/span><span style=\"color: #6F42C1\">Long<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Session \u0641\u0642\u0637 \u0648\u062c\u0648\u062f \u06cc\u06a9 Token \u0646\u06cc\u0633\u062a. \u0627\u06af\u0631 Token \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0646\u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0648\u0627\u0631\u062f\u0634\u062f\u0647 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u0645. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 Token \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627\u06cc \u0627\u0648\u0646 \u0631\u0648 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645 \u0648 \u0647\u0646\u06af\u0627\u0645 \u062e\u0648\u0627\u0646\u062f\u0646 Session\u060c \u0647\u0631 \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 StoredSession \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627 <\/strong><strong>edit<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 Token \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>context\n\n\u00a0\u00a0\u00a0 .sessionDataStore\n\n\u00a0\u00a0\u00a0 .edit { preferences ->\n\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0preferences&#91;tokenKey&#93; =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 token\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 preferences&#91;expiresAtKey&#93; =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 expiresAt\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .sessionDataStore<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\"> { preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0preferences&#91;tokenKey&#93; <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 token<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 preferences&#91;expiresAtKey&#93; <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 expiresAt<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0648\u06a9 edit \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc \u062f\u0627\u062e\u0644 DataStore \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645. \u0645\u062a\u063a\u06cc\u0631 preferences \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0639\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 Token \u0631\u0648 \u0628\u0627 \u06a9\u0644\u06cc\u062f tokenKey \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0631\u0648 \u0628\u0627 \u06a9\u0644\u06cc\u062f expiresAtKey \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0627\u062e\u0644 \u062a\u0627\u0628\u0639 suspend \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647\u060c \u0686\u0648\u0646 \u0646\u0648\u0634\u062a\u0646 \u0631\u0648\u06cc \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc \u0645\u0645\u06a9\u0646\u0647 \u06a9\u0645\u06cc \u0632\u0645\u0627\u0646 \u0628\u0628\u0631\u0647 \u0648 \u0646\u0628\u0627\u06cc\u062f Thread \u0627\u0635\u0644\u06cc \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062e\u0648\u0627\u0646\u062f\u0646 \u0641\u0642\u0637 \u0627\u0648\u0644\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627 <\/strong><strong>first<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a DataStore \u0628\u0647 \u0634\u06a9\u0644 Flow \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u0645\u0648\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>context\n\n\u00a0\u00a0\u00a0 .sessionDataStore\n\n\u00a0\u00a0\u00a0 .data<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .sessionDataStore<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #D73A49\">data<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0627\u062e\u0644 \u062a\u0627\u0628\u0639 getSession() \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u062f\u0627\u0626\u0645 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a DataStore \u0631\u0648 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u0645\u061b \u0641\u0642\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0647\u0645\u06cc\u0646 \u0627\u0644\u0627\u0646 Token \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u062e\u0648\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val preferences =\n\n\u00a0\u00a0\u00a0 context\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .sessionDataStore\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .data\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .first()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> preferences <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .sessionDataStore<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #D73A49\">data<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">first<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">first \u0627\u0648\u0644\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 Flow \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0639\u062f \u062e\u0648\u0627\u0646\u062f\u0646 \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 Session \u0641\u0639\u0644\u06cc \u0631\u0648 \u06cc\u06a9 \u0628\u0627\u0631 \u0628\u062e\u0648\u0646\u06cc\u0645 \u0648 \u062f\u0631\u0628\u0627\u0631\u0647 Login \u0628\u0648\u062f\u0646 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0646\u0628\u0648\u062f\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0642\u062f\u0627\u0631\u0647\u0627<\/strong><strong> Session <\/strong><strong>\u0631\u0627 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (\n\n\u00a0\u00a0\u00a0 token.isNullOrBlank() ||\n\n\u00a0\u00a0\u00a0 expiresAt == null\n\n) {\n\n\u00a0\u00a0\u00a0 null\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 token.<\/span><span style=\"color: #6F42C1\">isNullOrBlank<\/span><span style=\"color: #24292E\">() <\/span><span style=\"color: #D73A49\">||<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 expiresAt <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0639\u062a\u0628\u0631 \u0628\u0648\u062f\u0646 Session \u0647\u0645 Token \u0644\u0627\u0632\u0645\u0647 \u0648 \u0647\u0645 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627. \u0627\u06af\u0631 Token \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0647\u0646\u0648\u0632 \u0645\u0639\u062a\u0628\u0631\u0647 \u06cc\u0627 \u0646\u0647. \u0628\u0631\u0639\u06a9\u0633\u060c \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0628\u062f\u0648\u0646 Token \u0647\u0645 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0646\u062f\u0627\u0631\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u062a\u0627\u0628\u0639 null \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u062e\u0627\u0631\u062c\u200c\u0634\u062f\u0647 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062d\u0630\u0641<\/strong><strong> Session <\/strong><strong>\u0628\u0627 <\/strong><strong>remove<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0633\u0627\u0628 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u0627\u0632 DataStore \u062d\u0630\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>preferences.remove(\n\n\u00a0\u00a0\u00a0 tokenKey\n\n)\n\npreferences.remove(\n\n\u00a0\u00a0\u00a0 expiresAtKey\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">preferences.<\/span><span style=\"color: #6F42C1\">remove<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 tokenKey<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">preferences.<\/span><span style=\"color: #6F42C1\">remove<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 expiresAtKey<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Logout \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0635\u0641\u062d\u0647 Login \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645. \u0628\u0627\u06cc\u062f Token \u0648\u0627\u0642\u0639\u06cc \u0647\u0645 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u0627\u06a9 \u0628\u0634\u0647. \u0648\u06af\u0631\u0646\u0647 \u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u0628\u0634\u0647\u060c Token \u0642\u0628\u0644\u06cc \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647 \u0648 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f\u0634\u062f\u0647 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0628\u0627 remove \u0647\u0645 Token \u0648 \u0647\u0645 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062d\u0630\u0641 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a <\/strong><strong>TokenStorage <\/strong><strong>\u0648 <\/strong><strong>SessionManager<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">TokenStorage \u0641\u0642\u0637 \u0645\u06cc\u200c\u062f\u0648\u0646\u0647 \u0686\u0637\u0648\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647\u060c \u062e\u0648\u0627\u0646\u062f\u0647 \u06cc\u0627 \u062d\u0630\u0641 \u0628\u06a9\u0646\u0647. \u0627\u0645\u0627 \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u0639\u062a\u0628\u0631 \u0628\u0648\u062f\u0646 Session \u062a\u0635\u0645\u06cc\u0645 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u0631\u0648 \u062f\u0627\u062e\u0644 SessionManager \u06af\u0630\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class SessionManager(\n\n\u00a0\u00a0\u00a0 private val tokenStorage:\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TokenStorage\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">SessionManager<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> tokenStorage:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TokenStorage<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u0633\u0626\u0648\u0644\u06cc\u062a\u200c\u0647\u0627 \u0631\u0648 \u062c\u062f\u0627 \u06a9\u0631\u062f\u06cc\u0645. TokenStorage \u0628\u0627 DataStore \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 SessionManager \u0645\u06cc\u200c\u06af\u0647 Session \u0645\u0639\u062a\u0628\u0631 \u0647\u0633\u062a \u06cc\u0627 \u0646\u0647\u060c Token \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u06cc\u0627 \u0646\u0647 \u0648 \u0647\u0646\u06af\u0627\u0645 Logout \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0628\u06cc\u0641\u062a\u0647. \u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0645\u0646\u0637\u0642 Session \u062f\u0627\u062e\u0644 ViewModel \u067e\u062e\u0634 \u0646\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0628\u0631\u0631\u0633\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0632\u0645\u0627\u0646\u06cc<\/strong><strong> Token<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 getValidToken() \u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0631\u0648 \u0628\u0627 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (\n\n\u00a0\u00a0\u00a0 currentTime >= session.expiresAt\n\n) {\n\n\u00a0\u00a0\u00a0 tokenStorage.clearSession()\n\n\u00a0\u00a0\u00a0 return null\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 currentTime <\/span><span style=\"color: #D73A49\">&gt;=<\/span><span style=\"color: #24292E\"> session.expiresAt<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 tokenStorage.<\/span><span style=\"color: #6F42C1\">clearSession<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0628\u0647 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0631\u0633\u06cc\u062f\u0647 \u06cc\u0627 \u0627\u0632 \u0627\u0648\u0646 \u06af\u0630\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c Token \u062f\u06cc\u06af\u0647 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a Session \u0631\u0648 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 null \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0635\u0631\u0641\u0627\u064b \u0648\u062c\u0648\u062f \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062f\u0627\u062e\u0644 DataStore \u0628\u0627\u0639\u062b \u0646\u0645\u06cc\u0634\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0634\u0647 \u0648\u0627\u0631\u062f\u0634\u062f\u0647 \u0628\u0627\u0642\u06cc \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 \u0628\u0647 \u062b\u0627\u0646\u06cc\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">System.currentTimeMillis<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u062d\u0633\u0628 \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 \u0627\u0633\u062a\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 expiresAt \u062a\u0648\u0644\u06cc\u062f\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 PHP \u0628\u0631\u062d\u0633\u0628 \u062b\u0627\u0646\u06cc\u0647 \u0628\u0648\u062f. \u0628\u0631\u0627\u06cc \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u0646 \u0648\u0627\u062d\u062f\u0647\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val currentTime =\n\n\u00a0\u00a0\u00a0 System.currentTimeMillis()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .div(1000)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> currentTime <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 System.<\/span><span style=\"color: #6F42C1\">currentTimeMillis<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">div<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">1000<\/span><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646 \u062a\u0642\u0633\u06cc\u0645 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u062f\u0627\u062f\u06cc\u0645\u060c \u0632\u0645\u0627\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0632\u0627\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0635\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0631\u062f Token \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0641\u0642\u0637 \u0648\u062c\u0648\u062f<\/strong><strong> Token <\/strong><strong>\u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0646\u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 SessionManager \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0642\u0637 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 Token \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u06cc\u0627 \u0646\u0647\u060c \u062a\u0627\u0628\u0639 \u0632\u06cc\u0631 \u0631\u0648 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getValidToken():\n\n\u00a0\u00a0\u00a0 String?<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getValidToken<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 String?<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0647\u0645 Token \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647 \u0648 \u0647\u0645 \u062a\u0627\u0631\u06cc\u062e \u0627\u0646\u0642\u0636\u0627\u0634 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 Token \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u06cc\u0627 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c null \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0647\u0631 \u0628\u0627\u0631 \u0645\u0646\u0637\u0642 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u0631\u0648 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u0646\u061b \u0641\u0642\u0637 \u0627\u0632 getValidToken \u06cc\u06a9 Token \u0645\u0639\u062a\u0628\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0636\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 Login \u06cc\u0627 Home \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645\u060c \u0686\u0648\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 DataStore \u06a9\u0645\u06cc \u0632\u0645\u0627\u0646 \u0645\u06cc\u200c\u0628\u0631\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0633\u0647 \u0648\u0636\u0639\u06cc\u062a \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>StartDestination.Loading\n\nStartDestination.Login\n\nStartDestination.Home<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">StartDestination.Loading<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">StartDestination.Login<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">StartDestination.Home<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Loading \u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0646\u0648\u0632 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc Session \u0627\u0633\u062a. Login \u06cc\u0639\u0646\u06cc Token \u0645\u0639\u062a\u0628\u0631\u06cc \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u0647 \u0648 \u0628\u0627\u06cc\u062f \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. Home \u0647\u0645 \u06cc\u0639\u0646\u06cc Session \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0648\u0627\u0631\u062f \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0634\u0647. \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0645\u06cc\u0627\u0646\u06cc Loading \u062c\u0644\u0648\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0644\u062d\u0638\u0647\u200c\u0627\u06cc \u0648 \u0627\u0634\u062a\u0628\u0627\u0647 \u0635\u0641\u062d\u0647 Login \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0628\u0631\u0631\u0633\u06cc<\/strong><strong> Session <\/strong><strong>\u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ViewModel \u0648 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646 \u0627\u0648\u0646\u060c checkSession \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>init {\n\n\u00a0\u00a0\u00a0 checkSession()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">init<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">checkSession<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u062f\u0641 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u0635\u0641\u062d\u0647\u060c DataStore \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0628\u06a9\u0646\u0647. \u0627\u06af\u0631 Token \u0645\u0639\u062a\u0628\u0631 \u067e\u06cc\u062f\u0627 \u0628\u0634\u0647\u060c \u0645\u0642\u0635\u062f \u0631\u0648\u06cc Home \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0627\u06af\u0631 Token \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u06cc\u0627 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0645\u0642\u0635\u062f Login \u0645\u06cc\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0631\u0648\u06cc Session \u0648\u0627\u0642\u0639\u06cc \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647\u060c \u0646\u0647 \u0627\u0632 \u0631\u0648\u06cc \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u062b\u0627\u0628\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>return@launch<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0639\u0636\u06cc \u0628\u062e\u0634\u200c\u0647\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">return@launch<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u06a9\u062f \u062f\u0627\u062e\u0644 \u0628\u0644\u0648\u06a9 viewModelScope.launch \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647\u060c return@launch \u0641\u0642\u0637 \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 Coroutine \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 Token \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u067e\u06cc\u062f\u0627 \u0646\u0634\u0647\u060c \u0645\u0642\u0635\u062f Login \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0639\u062f \u0628\u0627 return@launch \u0627\u062c\u0627\u0632\u0647 \u0646\u0645\u06cc\u200c\u062f\u06cc\u0645 \u06a9\u062f\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Home \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0627\u062c\u0631\u0627 \u0628\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647<\/strong><strong> Session <\/strong><strong>\u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0639\u062f \u0627\u0632<\/strong><strong> Login<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0645\u0648\u0641\u0642 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a Token\u060c \u0642\u0628\u0644 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0634 Home \u0627\u06cc\u0646 \u06a9\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sessionManager.saveLogin(\n\n\u00a0\u00a0\u00a0 token =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 receivedToken,\n\n\u00a0\u00a0\u00a0 expiresAt =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 receivedExpiresAt\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">sessionManager.<\/span><span style=\"color: #6F42C1\">saveLogin<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 token <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 receivedToken,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 expiresAt <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 receivedExpiresAt<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0647\u0645\u0647. \u0627\u06af\u0631 \u0641\u0642\u0637 State \u0635\u0641\u062d\u0647 \u0631\u0648 \u0631\u0648\u06cc Home \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0627\u062f\u06cc\u0645 \u0648\u0644\u06cc Token \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645\u060c \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u062f\u060c \u0627\u0645\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0633\u062a\u0646 \u0648 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Session \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0641\u062a. \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 Token \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627\u060c \u0648\u0631\u0648\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u0626\u0645\u06cc \u0645\u06cc\u0634\u0647 \u062a\u0627 \u0648\u0642\u062a\u06cc Token \u0645\u0646\u0642\u0636\u06cc \u06cc\u0627 \u062d\u0630\u0641 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0628\u0631\u0631\u0633\u06cc \u0645\u062d\u0644\u06cc \u0648 \u0628\u0631\u0631\u0633\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 Token \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0648 \u0632\u0645\u0627\u0646\u0634 \u062a\u0645\u0627\u0645 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647. \u0627\u0645\u0627 \u0628\u0639\u062f \u0628\u0627 \u0647\u0645\u0648\u0646 Token \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>repository.getProfile(\n\n\u00a0\u00a0\u00a0 token = token\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">repository.<\/span><span style=\"color: #6F42C1\">getProfile<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 token <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> token<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0631\u0633\u06cc \u0645\u062d\u0644\u06cc \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u062a\u0635\u0645\u06cc\u0645 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631\u0647 \u0648 \u0627\u0645\u0646\u06cc\u062a \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u062a\u0623\u0645\u06cc\u0646 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u0645\u06a9\u0646\u0647 Token \u062f\u0633\u062a\u200c\u06a9\u0627\u0631\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c Secret \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0627\u0634\u0647 \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0627\u0648\u0646 \u0631\u0648 \u0645\u0639\u062a\u0628\u0631 \u0646\u062f\u0648\u0646\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0633\u0631\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 Signature \u0648 \u062a\u0627\u0631\u06cc\u062e \u0627\u0646\u0642\u0636\u0627\u06cc JWT \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062a\u0635\u0645\u06cc\u0645 \u0646\u0647\u0627\u06cc\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u0639\u062a\u0628\u0631 \u0628\u0648\u062f\u0646 Token \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627 \u0633\u0631\u0648\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0634\u0631\u0648\u0639\u060c \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Token \u0627\u0632 DataStore \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647\u060c \u0641\u0642\u0637 \u0645\u06cc\u200c\u0641\u0647\u0645\u06cc\u0645 \u06cc\u06a9 Session \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647. \u0628\u0631\u0627\u06cc \u0645\u0637\u0645\u0626\u0646 \u0634\u062f\u0646 \u0627\u0632 \u0627\u0639\u062a\u0628\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0627\u0648\u0646\u060c \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 profile.php \u0631\u0648 \u0635\u062f\u0627 \u0645\u06cc\u200c\u0632\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0633\u0631\u0648\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647\u060c Session \u0645\u0639\u062a\u0628\u0631\u0647. \u0627\u06af\u0631 \u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e 401 \u0628\u062f\u0647\u060c \u06cc\u0639\u0646\u06cc Token \u062f\u06cc\u06af\u0647 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u0646\u06cc\u0633\u062a \u0648 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0628\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>applicationContext<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a TokenStorage \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>TokenStorage(\n\n\u00a0\u00a0\u00a0 context =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 applicationContext\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">TokenStorage<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 context <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 applicationContext<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0628\u0627\u06cc\u062f \u0628\u0647 Context\u0627\u06cc \u0648\u0635\u0644 \u0628\u0627\u0634\u0647 \u06a9\u0647 \u0628\u0647 \u0639\u0645\u0631 \u06cc\u06a9 Activity \u0645\u062d\u062f\u0648\u062f \u0646\u0628\u0627\u0634\u0647. applicationContext \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062e\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0632\u0646\u062f\u0647 \u0627\u0633\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0648 \u0628\u0627 \u0686\u0631\u062e\u0634 \u0635\u0641\u062d\u0647 \u06cc\u0627 \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 Activity \u0627\u0632 \u0628\u06cc\u0646 \u0646\u0645\u06cc\u0631\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0627\u0626\u0645\u06cc \u0645\u062b\u0644 DataStore \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u06cc\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0646\u062a\u062e\u0627\u0628<\/strong><strong> Login <\/strong><strong>\u06cc\u0627<\/strong><strong> Home <\/strong><strong>\u062f\u0631 <\/strong><strong>AppContent<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0645\u0642\u0635\u062f \u0641\u0639\u0644\u06cc \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when (\n\n\u00a0\u00a0\u00a0 state.destination\n\n) {\n\n\u00a0\u00a0\u00a0 StartDestination.Loading -> {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 StartupScreen()\n\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 StartDestination.Login -> {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LoginScreen(...)\n\n\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 StartDestination.Home -> {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 HomeScreen(...)\n\n\u00a0\u00a0\u00a0 }\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 state.destination<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 StartDestination.Loading <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">StartupScreen<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 StartDestination.Login <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">LoginScreen<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 StartDestination.Home <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">HomeScreen<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 Navigation \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u0627\u06cc \u0646\u0633\u0627\u062e\u062a\u06cc\u0645. \u0641\u0642\u0637 State \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u062f\u0627\u0645 \u0635\u0641\u062d\u0647 \u0628\u0627\u06cc\u062f \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u0648\u0642\u062a\u06cc Session \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u0634\u0647 \u06cc\u0627 \u06a9\u0627\u0631\u0628\u0631 Login \u0648 Logout \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0645\u0642\u062f\u0627\u0631 destination \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 Compose \u0635\u0641\u062d\u0647 \u0645\u0646\u0627\u0633\u0628 \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> DataStore <\/strong><strong>\u0645\u0639\u0645\u0648\u0644\u06cc \u0627\u0645\u0646\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Preferences DataStore \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0627\u0626\u0645\u06cc \u0648 \u0645\u0646\u0638\u0645 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 \u062e\u0648\u062f\u0634 \u0628\u0647 \u0645\u0639\u0646\u06cc \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u06a9\u0627\u0645\u0644 Token \u0646\u06cc\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0647\u062f\u0641 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc Session Management \u0648 \u062d\u0641\u0638 Login \u0628\u0648\u062f. \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc\u060c JWT \u0645\u062b\u0644 \u06a9\u0644\u06cc\u062f \u0648\u0631\u0648\u062f \u06a9\u0627\u0631\u0628\u0631\u0647 \u0648 \u0628\u0647\u062a\u0631\u0647 \u0628\u0627 \u06cc\u06a9 \u0631\u0648\u0634 \u0627\u0645\u0646\u200c\u062a\u0631 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 DataStore \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u0645\u0646\u0627\u0633\u0628\u0647\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc Token \u062d\u0633\u0627\u0633 \u0628\u0627\u06cc\u062f \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0645\u0646 \u0648 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0637\u0631\u0627\u062d\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f2<br>\u0630\u062e\u06cc\u0631\u0647 Token \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645 \u0628\u0639\u062f \u0627\u0632 Login\u060c \u0633\u0631\u0648\u0631 \u06cc\u06a9 JWT Token \u0628\u0647 \u0645\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u062f \u0647\u0631 \u0628\u0627\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 Login \u06a9\u0646\u062f. \u0627\u0645\u0627 \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0645\u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f: <strong>Token \u0631\u0627 \u06a9\u062c\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Token \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0627\u0634\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var token = \"abc123\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u062f. \u067e\u0633 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc \u06af\u0648\u0634\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0628\u0627 \u062f\u0648 \u0631\u0648\u0634 \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SharedPreferences<\/li>\n\n\n\n<li>DataStore<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Token \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645<\/li>\n\n\n\n<li>\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">SharedPreferences \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SharedPreferences \u06cc\u06a9 \u062d\u0627\u0641\u0638\u0647 \u0633\u0627\u062f\u0647 \u062f\u0627\u062e\u0644\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Token<\/li>\n\n\n\n<li>\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647<\/li>\n\n\n\n<li>\u0622\u062e\u0631\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631\u0634 \u0634\u0628\u06cc\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Key<br>\u2193<br>Value<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">jwt_token<br>\u2193<br>eyJhbGc&#8230;<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a SharedPreferences<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val prefs =\n    context.getSharedPreferences(\n        \"app_settings\",\n        Context.MODE_PRIVATE\n    )\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> prefs <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    context.<\/span><span style=\"color: #6F42C1\">getSharedPreferences<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;app_settings&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        Context.MODE_PRIVATE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 app_settings \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 Token \u0628\u0627 SharedPreferences<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun saveToken(\n    token:String\n){\n\n    prefs.edit()\n        .putString(\n            \"TOKEN\",\n            token\n        )\n        .apply()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">saveToken<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    token:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    prefs.<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">putString<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #032F62\">&quot;TOKEN&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            token<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">apply<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 putString \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0645\u062a\u0646\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646. \u0646\u062a\u06cc\u062c\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TOKEN\n\n\u2193\n\nabc123xyz\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062e\u0648\u0627\u0646\u062f\u0646 Token<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun getToken():String?{\n\n\n    return prefs.getString(\n\n        \"TOKEN\",\n\n        null\n\n    )\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getToken<\/span><span style=\"color: #24292E\">():<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> prefs.<\/span><span style=\"color: #6F42C1\">getString<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;TOKEN&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Token \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f abc123xyz \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f \u0648 \u0627\u06af\u0631 \u0646\u0628\u0627\u0634\u062f null<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062d\u0630\u0641 Token \u0647\u0646\u06af\u0627\u0645 Logout<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun clearToken(){\n\n    prefs.edit()\n\n        .remove(\n            \"TOKEN\"\n        )\n\n        .apply()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">clearToken<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    prefs.<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">remove<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #032F62\">&quot;TOKEN&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        .<\/span><span style=\"color: #6F42C1\">apply<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Logout:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">TOKEN<br>\u2193<br>Delete<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 SharedPreferences \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SharedPreferences \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0627\u0633\u062a<\/li>\n\n\n\n<li>Flow \u0646\u062f\u0627\u0631\u062f<\/li>\n\n\n\n<li>\u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0637\u0631\u0627\u062d\u06cc \u0646\u0634\u062f\u0647<\/li>\n\n\n\n<li>\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0627 \u062e\u0648\u0628 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0645\u0639\u0645\u0648\u0644\u0627\u064b DataStore \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">DataStore \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u0633\u062a. \u0645\u0632\u06cc\u062a\u200c\u0647\u0627:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u062f\u0631\u0646\u200c\u062a\u0631 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u0628\u0627 Coroutine \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0628\u0627 Flow \u0647\u0645\u0627\u0647\u0646\u06af \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 DataStore<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Gradle:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n    \"androidx.datastore:datastore-preferences:1.1.1\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;androidx.datastore:datastore-preferences:1.1.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a DataStore<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0641\u0627\u06cc\u0644 DataStoreManager.kt \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u0627\u0628\u062a\u062f\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val Context.dataStore by preferencesDataStore(\n    name = \"user_settings\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> Context.dataStore <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">preferencesDataStore<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;user_settings&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 DataStore \u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">user_settings<br>\u2193<br>data<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0639\u0631\u06cc\u0641 Key \u0628\u0631\u0627\u06cc Token<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 DataStore \u0628\u0627\u06cc\u062f \u06a9\u0644\u06cc\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val TOKEN_KEY =\n    stringPreferencesKey(\n        \"access_token\"\n    )\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> TOKEN_KEY <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">stringPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;access_token&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u0633\u0645 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc access_token \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 Token \u0628\u0627 DataStore<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun saveToken(\n    token:String\n){\n\n    context.dataStore.edit {\n\n        preferences ->\n\n\n        preferences&#91;TOKEN_KEY&#93;\n            =\n            token\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">saveToken<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    token:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    context.dataStore.<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        preferences&#91;TOKEN_KEY&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">            token<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 edit \u06cc\u0639\u0646\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062e\u0648\u0627\u0646\u062f\u0646 Token \u0628\u0627 DataStore<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val tokenFlow =\ncontext.dataStore.data.map {\n\n    preferences ->\n\n\n    preferences&#91;TOKEN_KEY&#93;\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> tokenFlow <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">context.dataStore.<\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    preferences&#91;TOKEN_KEY&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0645\u0648\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0647\u0631 \u0648\u0642\u062a Token \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Flow&lt;String?><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a SharedPreferences \u0648 DataStore<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u06cc\u0644\u06cc \u062e\u0644\u0627\u0635\u0647:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">SharedPreferences<\/th><th class=\"has-text-align-center\" data-align=\"center\">DataStore<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u062c\u062f\u06cc\u062f\u062a\u0631<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0633\u0627\u062f\u0647<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u062d\u0631\u0641\u0647\u200c\u0627\u06cc\u200c\u062a\u0631<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0628\u062f\u0648\u0646 Flow<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u0647\u0645\u0631\u0627\u0647 Flow<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0645\u0646\u0627\u0633\u0628 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u0645\u0646\u0627\u0633\u0628 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Compose + MVVM \u0645\u0639\u0645\u0648\u0644\u0627\u064b DataStore \u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u0647\u062a\u0631\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 Token \u0646\u06cc\u0633\u062a. \u06af\u0627\u0647\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u0627\u062f\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0647\u0645 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"id\":15,\n \"name\":\"Ali\",\n \"email\":\"ali@test.com\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">15<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;name&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Ali&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;email&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;ali@test.com&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a UserPreferences<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class UserPreferences(\n\n    val token:String?,\n\n    val userId:Int?,\n\n    val name:String?\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserPreferences<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> userId:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">?,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u06cc\u06a9\u062c\u0627 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 User Info<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun saveUser(\n\n    id:Int,\n\n    name:String\n\n){\n\n    context.dataStore.edit {\n\n        it&#91;USER_ID&#93; = id\n\n        it&#91;USER_NAME&#93; = name\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">saveUser<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    name:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    context.dataStore.<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        it&#91;USER_ID&#93; <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> id<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        it&#91;USER_NAME&#93; <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> name<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0630\u062e\u06cc\u0631\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc Login \u0646\u06cc\u0633\u062a. \u0645\u062b\u0644\u0627\u064b\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dark Mode\n\nLanguage\n\nNotification\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627 \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val DARK_MODE_KEY =\nbooleanPreferencesKey(\n    \"dark_mode\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> DARK_MODE_KEY <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">booleanPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #032F62\">&quot;dark_mode&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0630\u062e\u06cc\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>preferences&#91;DARK_MODE_KEY&#93;\n=\ntrue\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">preferences&#91;DARK_MODE_KEY&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #005CC5\">true<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0628\u062e\u0634. \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App Start\n\n\u2193\n\nRead DataStore\n\n\u2193\n\nToken \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a\u061f\n\n\u2193\n\nYes \u2192 Home\n\nNo \u2192 Login\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 ViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class AuthViewModel(\n\nprivate val storage:\nTokenStorage\n\n):ViewModel()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AuthViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> storage:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">TokenStorage<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0634\u0631\u0648\u0639:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun checkLogin(){\n\nviewModelScope.launch {\n\n\nval token =\nstorage.getToken()\n\n\nif(token != null){\n\n    \/\/ User Logged In\n\n}\nelse{\n\n    \/\/ Show Login\n\n}\n\n\n}\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">checkLogin<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">storage.<\/span><span style=\"color: #6F42C1\">getToken<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\">(token <\/span><span style=\"color: #D73A49\">!=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\">\/\/ User Logged In<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6A737D\">\/\/ Show Login<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Token \u062f\u0631 API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 Token \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Authorization: Bearer TOKEN\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0641\u0632\u0648\u062f\u0646 Token \u0628\u0647 Retrofit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627 Interceptor \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class AuthInterceptor(\n\nprivate val storage:TokenStorage\n\n):Interceptor{\n\n\noverride fun intercept(\n\nchain:Interceptor.Chain\n\n):Response{\n\n\nval token =\nrunBlocking {\n\nstorage.getToken()\n\n}\n\n\n\nval request =\nchain.request()\n.newBuilder()\n.addHeader(\n\n\"Authorization\",\n\n\"Bearer $token\"\n\n)\n.build()\n\n\n\nreturn chain.proceed(request)\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AuthInterceptor<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> storage:<\/span><span style=\"color: #6F42C1\">TokenStorage<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">Interceptor<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">intercept<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">chain:<\/span><span style=\"color: #6F42C1\">Interceptor<\/span><span style=\"color: #24292E\">.Chain<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">Response<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">runBlocking<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">storage.<\/span><span style=\"color: #6F42C1\">getToken<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> request <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">chain.<\/span><span style=\"color: #6F42C1\">request<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">newBuilder<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addHeader<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Authorization&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Bearer <\/span><span style=\"color: #005CC5\">$token<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">build<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> chain.<\/span><span style=\"color: #6F42C1\">proceed<\/span><span style=\"color: #24292E\">(request)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">API Request<br>\u2193<br>Token \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f<br>\u2193<br>Server<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u062a\u0647 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0645\u0647\u0645<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JWT Token \u0645\u062b\u0644 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u0631\u0632\u0634 \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f. \u0686\u0648\u0646 \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 Token \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u062a\u0648\u0627\u0646\u062f \u062e\u0648\u062f\u0634 \u0631\u0627 \u062c\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u062f. \u067e\u0633 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0627\u0632 Encrypted DataStore \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0647\u0645\u0686\u0646\u06cc\u0646:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Token \u0631\u0627 \u062f\u0627\u062e\u0644 Log \u0686\u0627\u067e \u0646\u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 \u0645\u0639\u0645\u0648\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u062f\u0627\u062e\u0644 \u06a9\u062f Hardcode \u0646\u06a9\u0646\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0631\u0633<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n\u251c\u2500\u2500 data\n\n\u2502   \u251c\u2500\u2500 storage\n\n\u2502   \u2502    \u251c\u2500\u2500 TokenStorage.kt\n\n\u2502   \u2502    \u2514\u2500\u2500 UserPreferences.kt\n\n\u2502   \u2502\n\u2502   \u2514\u2500\u2500 network\n\n\u2502        \u2514\u2500\u2500 AuthInterceptor.kt\n\n\n\u251c\u2500\u2500 domain\n\n\u2502   \u2514\u2500\u2500 SessionManager.kt\n\n\n\u2514\u2500\u2500 presentation\n\n    \u2514\u2500\u2500 AuthViewModel.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc ali \u0648 \u0631\u0645\u0632 1234 \u0631\u0648 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc \u0648 \u0631\u0648\u06cc \u00ab\u0648\u0631\u0648\u062f\u00bb \u0645\u06cc\u200c\u0632\u0646\u06cc\u060c \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0627\u062a\u0641\u0627\u0642\u200c\u0647\u0627 \u067e\u0634\u062a\u200c\u0633\u0631\u0647\u0645 \u0628\u06cc\u0641\u062a\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">LoginScreen<br>\u2193<br>\u0627\u0631\u0633\u0627\u0644 username \u0648 password \u0628\u0647 login.php<br>\u2193<br>\u062f\u0631\u06cc\u0627\u0641\u062a JWT \u0627\u0632 \u0633\u0631\u0648\u0631<br>\u2193<br>\u0630\u062e\u06cc\u0631\u0647 Token \u0648 \u0632\u0645\u0627\u0646 \u0627\u0646\u0642\u0636\u0627 \u062f\u0631 DataStore<br>\u2193<br>\u062f\u0631\u06cc\u0627\u0641\u062a profile.php \u0628\u0627 Token<br>\u2193<br>\u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 DataStore<br>\u2193<br>\u0646\u0645\u0627\u06cc\u0634 HomeScreen<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0645\u0648\u0641\u0642\u060c \u0641\u0631\u0645 \u0648\u0631\u0648\u062f \u0628\u0627\u06cc\u062f \u06a9\u0627\u0645\u0644 \u06a9\u0646\u0627\u0631 \u0628\u0631\u0647 \u0648 \u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u0628\u0627 \u0639\u0646\u0648\u0627\u0646 \u00ab\u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc\u00bb \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0647. \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0628\u0627\u06cc\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647\u200c\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u062b\u0644 \u0646\u0627\u0645\u060c \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\u060c \u0634\u0646\u0627\u0633\u0647\u060c \u0646\u0642\u0634 \u0648 \u0628\u062e\u0634\u06cc \u0627\u0632 Token \u062f\u06cc\u062f\u0647 \u0628\u0634\u0647. \u0647\u0645\u0686\u0646\u06cc\u0646 Switch \u062d\u0627\u0644\u062a \u062a\u0627\u0631\u06cc\u06a9\u060c \u062f\u06a9\u0645\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0648\u0628\u0627\u0631\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u060c \u0628\u062e\u0634 \u0622\u0632\u0645\u0627\u06cc\u0634 SharedPreferences \u0648 \u062f\u06a9\u0645\u0647 \u062e\u0631\u0648\u062c \u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634 \u062f\u0631\u0633 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0648\u0631\u0648\u062f \u0645\u0648\u0641\u0642\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0628\u0646\u062f\u06cc \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u06a9\u0646\u06cc. \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0646\u0628\u0627\u06cc\u062f \u0641\u0631\u0645 Login \u0631\u0648 \u0628\u0628\u06cc\u0646\u06cc. \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f Token \u0631\u0648 \u0627\u0632 DataStore \u0628\u062e\u0648\u0646\u0647\u060c \u0627\u0639\u062a\u0628\u0627\u0631 \u0632\u0645\u0627\u0646\u06cc \u0627\u0648\u0646 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u0647\u060c \u0628\u0627 Interceptor \u0628\u0631\u0627\u06cc profile.php \u0628\u0641\u0631\u0633\u062a\u0647 \u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0648\u0627\u0631\u062f Home \u0628\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">\u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0646\u0627\u0645\u0647<br>\u2193<br>\u062e\u0648\u0627\u0646\u062f\u0646 DataStore<br>\u2193<br>Token \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a<br>\u2193<br>\u0648\u0631\u0648\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 HomeScreen<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0631\u0648\u06cc \u00ab\u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0633\u0627\u0628\u00bb \u0628\u0632\u0646\u06cc\u060c Token \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 DataStore \u062d\u0630\u0641 \u0645\u06cc\u200c\u0634\u0646 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0635\u0641\u062d\u0647 Login \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0627\u0644\u0628\u062a\u0647 \u062a\u0646\u0638\u06cc\u0645 Dark Mode \u067e\u0627\u06a9 \u0646\u0645\u06cc\u0634\u0647\u060c \u0686\u0648\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a \u0648 \u062c\u0632\u0648 Session \u06a9\u0627\u0631\u0628\u0631 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u06af\u0631 \u0628\u0639\u062f \u0627\u0632 \u0632\u062f\u0646 \u062f\u06a9\u0645\u0647 \u0648\u0631\u0648\u062f \u0647\u0645\u0686\u0646\u0627\u0646 \u0647\u0645\u06cc\u0646 \u0641\u0631\u0645 \u0628\u0627\u0642\u06cc \u0628\u0645\u0648\u0646\u0647\u060c \u06cc\u0639\u0646\u06cc Login \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u0647 \u06cc\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0633\u0631\u0648\u0631 \u062e\u0637\u0627 \u062f\u0627\u062f\u0647. \u0648\u0644\u06cc \u0627\u06af\u0631 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u0647\u060c \u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0648\u0627\u0631\u062f HomeScreen \u0628\u0634\u06cc.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> SharedPreferences <\/strong><strong>\u0628\u0627 <\/strong><strong>getSharedPreferences<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0631\u0648\u0634 \u0642\u062f\u06cc\u0645\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>context.getSharedPreferences(\n\n\u00a0\u00a0\u00a0 \"shared_preferences_demo\",\n\n\u00a0\u00a0\u00a0 Context.MODE_PRIVATE\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">context.<\/span><span style=\"color: #6F42C1\">getSharedPreferences<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;shared_preferences_demo&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Context.MODE_PRIVATE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0628\u0627\u0631\u062a shared_preferences_demo \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0627\u0633\u062a. MODE_PRIVATE \u0647\u0645 \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u062e\u0648\u062f \u0647\u0645\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0648 \u062f\u0627\u0631\u0647. SharedPreferences \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0648\u0686\u06a9 \u0645\u062b\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0627\u062f\u0647 \u0645\u0646\u0627\u0633\u0628\u0647\u060c \u0648\u0644\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u06cc\u0633\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc \u0627\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 JWT \u0627\u0635\u0644\u06cc \u0631\u0648 \u062f\u0627\u062e\u0644 \u0627\u0648\u0646 \u0646\u06af\u0630\u0627\u0634\u062a\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627 <\/strong><strong>putString <\/strong><strong>\u0648 <\/strong><strong>apply<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u0642\u062f\u0627\u0631 \u062f\u0631 SharedPreferences \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>preferences\n\n\u00a0\u00a0\u00a0 .edit()\n\n\u00a0\u00a0\u00a0 .putString(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"SAMPLE_TOKEN\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"sample_token_123456\"\n\n\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 .apply()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">preferences<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">edit<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">putString<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;SAMPLE_TOKEN&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;sample_token_123456&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">apply<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644 \u0628\u0627 edit \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0645\u06cc\u200c\u0634\u06cc\u0645\u060c \u0628\u0639\u062f \u0628\u0627 putString \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0645\u062a\u0646\u06cc \u0631\u0648 \u0628\u0627 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0645\u0634\u062e\u0635 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. apply \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0648 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 \u0645\u0646\u062a\u0638\u0631 \u06a9\u0627\u0645\u0644 \u0634\u062f\u0646 \u0646\u0648\u0634\u062a\u0646 \u0631\u0648\u06cc \u062d\u0627\u0641\u0638\u0647 \u0646\u0645\u06cc\u200c\u0645\u0648\u0646\u0647\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u062d\u0630\u0641 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/strong><strong> SharedPreferences<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0645\u0642\u062f\u0627\u0631 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>preferences.getString(\n\n\u00a0\u00a0\u00a0 \"SAMPLE_TOKEN\",\n\n\u00a0\u00a0\u00a0 null\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">preferences.<\/span><span style=\"color: #6F42C1\">getString<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;SAMPLE_TOKEN&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0647\u0645\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0647 \u0648 \u0627\u06af\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06cc\u0639\u0646\u06cc null \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0647. \u0628\u0631\u0627\u06cc \u062d\u0630\u0641\u0634 \u0647\u0645 \u0627\u0632 remove \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0639\u0645\u062f\u0627\u064b \u062c\u062f\u0627 \u0627\u0632 Session \u0627\u0635\u0644\u06cc \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a \u062a\u0627 \u062a\u0641\u0627\u0648\u062a SharedPreferences \u0648 DataStore \u0631\u0648 \u062f\u0631 \u0639\u0645\u0644 \u0628\u0628\u06cc\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> Preferences DataStore <\/strong><strong>\u062f\u0631 \u0633\u0637\u062d \u0641\u0627\u06cc\u0644<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val Context.userDataStore by\n\n\u00a0\u00a0\u00a0 preferencesDataStore(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name = \"user_settings\"\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> Context.userDataStore <\/span><span style=\"color: #D73A49\">by<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">preferencesDataStore<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;user_settings&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u06a9 \u0642\u0627\u0628\u0644\u06cc\u062a \u062c\u062f\u06cc\u062f \u0628\u0647 Context \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0627 context.userDataStore \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc\u0647. \u0627\u0648\u0646 \u0631\u0648 \u0628\u06cc\u0631\u0648\u0646 \u06a9\u0644\u0627\u0633 \u0648 \u062f\u0631 \u0633\u0637\u062d \u0641\u0627\u06cc\u0644 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644 user_settings \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 DataStore \u0633\u0627\u062e\u062a\u0647 \u0628\u0634\u0647. \u0633\u0627\u062e\u062a \u0686\u0646\u062f DataStore \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0627\u0639\u062b \u062a\u062f\u0627\u062e\u0644 \u0648 \u062e\u0637\u0627 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 <\/strong><strong>UserPreferences<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Token\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0648 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 \u062a\u0645\u0627\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u0628\u0647\u200c\u062c\u0627 \u06a9\u0646\u06cc\u0645\u060c \u06cc\u06a9 \u0645\u062f\u0644 \u06a9\u0627\u0645\u0644 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class UserPreferences(\n\n\u00a0\u00a0\u00a0 val token: String? = null,\n\n\u00a0\u00a0\u00a0 val expiresAt: Long? = null,\n\n\u00a0\u00a0\u00a0 val userId: Int? = null,\n\n\u00a0\u00a0\u00a0 val username: String? = null,\n\n\u00a0\u00a0\u00a0 val name: String? = null,\n\n\u00a0\u00a0\u00a0 val role: String? = null,\n\n\u00a0\u00a0\u00a0 val darkMode: Boolean = false\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UserPreferences<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> token: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> expiresAt: <\/span><span style=\"color: #6F42C1\">Long<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> userId: <\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> username: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> name: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> role: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> darkMode: <\/span><span style=\"color: #6F42C1\">Boolean<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">false<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0627\u0633\u062a. \u0647\u0631 \u0628\u0627\u0631 DataStore \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647\u060c \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc \u062e\u0627\u0645 \u062f\u0627\u062e\u0644 \u0627\u0648\u0646 \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 UserPreferences \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u0634\u0646 \u0648 \u0628\u0642\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u06cc\u06a9 Object \u0645\u0634\u062e\u0635 \u0648 \u062e\u0648\u0627\u0646\u0627 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0646\u0648\u0639\u200c\u062f\u0627\u0631<\/strong><strong> DataStore<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u0648\u0639\u0634 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>stringPreferencesKey(\"access_token\")\n\nlongPreferencesKey(\"expires_at\")\n\nintPreferencesKey(\"user_id\")\n\nbooleanPreferencesKey(\"dark_mode\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">stringPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;access_token&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">longPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;expires_at&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">intPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;user_id&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">booleanPreferencesKey<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;dark_mode&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">DataStore \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u0647 \u0647\u0631 \u06a9\u0644\u06cc\u062f \u0686\u0647 \u0646\u0648\u0639 \u0645\u0642\u062f\u0627\u0631\u06cc \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u0645\u062b\u0644\u0627\u064b Token \u0645\u062a\u0646 \u0627\u0633\u062a\u060c \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 Int \u0627\u0633\u062a \u0648 \u062a\u0646\u0638\u06cc\u0645 \u062d\u0627\u0644\u062a \u062a\u0627\u0631\u06cc\u06a9 Boolean. \u0627\u06cc\u0646 \u06a9\u0644\u06cc\u062f\u0647\u0627 \u0646\u0642\u0634 \u0622\u062f\u0631\u0633 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 DataStore \u0631\u0648 \u062f\u0627\u0631\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>preferencesFlow<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a DataStore \u0631\u0648 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u0646\u0645\u06cc\u200c\u062e\u0648\u0646\u06cc\u0645\u061b \u06cc\u06a9 Flow \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0627\u0648\u0646 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val preferencesFlow: Flow&lt;UserPreferences><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> preferencesFlow: <\/span><span style=\"color: #6F42C1\">Flow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">UserPreferences<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0648\u0642\u062a Token\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u06cc\u0627 \u062d\u0627\u0644\u062a \u062a\u0627\u0631\u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647\u060c DataStore \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 ViewModel \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0647 \u0648 UI \u0647\u0645 \u0628\u062f\u0648\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0633\u062a\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647\u200c\u0631\u0648\u0632 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0628\u062f\u06cc\u0644<\/strong><strong> Preferences <\/strong><strong>\u062e\u0627\u0645 \u0628\u0627 <\/strong><strong>map<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0627\u0635\u0644\u06cc DataStore \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f \u0648 \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0627\u0648\u0646 \u0628\u0647 UserPreferences \u0627\u0632 map \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.map { preferences ->\n\n\u00a0\u00a0\u00a0 UserPreferences(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 token = preferences&#91;tokenKey&#93;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 userId = preferences&#91;userIdKey&#93;,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 darkMode = preferences&#91;darkModeKey&#93; ?: false\n\n\u00a0\u00a0\u00a0 )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> { preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">UserPreferences<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 token <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> preferences&#91;tokenKey&#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 userId <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> preferences&#91;userIdKey&#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 darkMode <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> preferences&#91;darkModeKey&#93; ?: <\/span><span style=\"color: #005CC5\">false<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">map \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u062e\u0627\u0645\u06cc \u0631\u0648 \u06a9\u0647 DataStore \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 \u0645\u062f\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0645\u06cc\u200c\u0641\u0647\u0645\u0647. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0642\u06cc\u0647 \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc DataStore \u06a9\u0627\u0631 \u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646<\/strong><strong> DataStore <\/strong><strong>\u0628\u0627 <\/strong><strong>catch<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u062e\u0648\u0627\u0646\u062f\u0646 DataStore \u0645\u0645\u06a9\u0646\u0647 \u062e\u0637\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u06cc\u0627 \u062d\u0627\u0641\u0638\u0647 \u0631\u062e \u0628\u062f\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.catch { exception ->\n\n\u00a0\u00a0\u00a0 if (exception is IOException) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 emit(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 emptyPreferences()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 } else {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 throw exception\n\n\u00a0\u00a0\u00a0 }\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">catch<\/span><span style=\"color: #24292E\"> { exception <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (exception <\/span><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> IOException) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">emit<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">emptyPreferences<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 } <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">throw<\/span><span style=\"color: #24292E\"> exception<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc \u0642\u0627\u0628\u0644\u200c\u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0645\u062b\u0644 IOException \u0631\u062e \u0628\u062f\u0647\u060c \u0628\u0647\u200c\u062c\u0627\u06cc \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u06a9 Preferences \u062e\u0627\u0644\u06cc \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u0645\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u06cc\u200c\u062f\u0644\u06cc\u0644 \u0645\u062e\u0641\u06cc \u0646\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>emptyPreferences<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u062e\u0627\u0644\u06cc \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u06cc\u200c\u0633\u0627\u0632\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>emptyPreferences()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">emptyPreferences<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06af\u0631 \u0641\u0627\u06cc\u0644 DataStore \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0646\u0628\u0627\u0634\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0637\u0648\u0631\u06cc \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0627\u0646\u06af\u0627\u0631 \u0647\u0646\u0648\u0632 \u0647\u06cc\u0686 Token \u06cc\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062c\u0644\u0648\u06cc Crash \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u0633\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0634\u0627\u0647\u062f\u0647 \u062f\u0627\u0626\u0645\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0627 <\/strong><strong>collect<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 ViewModel \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sessionManager\n\n\u00a0\u00a0\u00a0 .preferencesFlow\n\n\u00a0\u00a0\u00a0 .collect { preferences ->\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _state.value =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _state.value.copy(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 preferences = preferences\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">sessionManager<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .preferencesFlow<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">collect<\/span><span style=\"color: #24292E\"> { preferences <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 _state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">copy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 preferences <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> preferences<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Coroutine \u062a\u0627 \u0648\u0642\u062a\u06cc ViewModel \u0641\u0639\u0627\u0644\u0647\u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a DataStore \u0631\u0648 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u0628\u0631 Dark Mode \u0631\u0648 \u0631\u0648\u0634\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0647\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u0628\u0647 ViewModel \u0645\u06cc\u200c\u0631\u0633\u0647 \u0648 UI \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u0645\u0647\u0645 DataStore \u0628\u0627 \u0631\u0648\u0634 \u0633\u0627\u062f\u0647 SharedPreferences \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647<\/strong><strong> Token <\/strong><strong>\u0648 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062f\u0631 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Login \u0627\u0628\u062a\u062f\u0627 \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Token<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">expiresAt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 Token \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0648 \u0627\u0632 \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u062b\u0644 \u0646\u0627\u0645\u060c \u0634\u0646\u0627\u0633\u0647 \u0648 \u0646\u0642\u0634 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u067e\u0627\u0633\u062e Login \u0641\u0642\u0637 Token \u0631\u0648 \u0645\u06cc\u200c\u062f\u0647\u060c \u0627\u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0645\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 Endpoint \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0647\u0646\u06af\u0627\u0645<\/strong><strong> Logout <\/strong><strong>\u062d\u0627\u0644\u062a \u062a\u0627\u0631\u06cc\u06a9 \u062d\u0630\u0641 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 clearSession \u0641\u0642\u0637 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u062d\u0630\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Token<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">expiresAt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">userId<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">username<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">name<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">role<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 darkModeKey \u0631\u0648 \u067e\u0627\u06a9 \u0646\u06a9\u0631\u062f\u06cc\u0645. \u0686\u0648\u0646 \u062d\u0627\u0644\u062a \u062a\u0627\u0631\u06cc\u06a9 \u06cc\u06a9 \u062a\u0646\u0638\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u060c \u0646\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631. \u062e\u0631\u0648\u062c \u0627\u0632 \u062d\u0633\u0627\u0628 \u0646\u0628\u0627\u06cc\u062f \u062a\u0646\u0638\u06cc\u0645 \u0638\u0627\u0647\u0631\u06cc \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0628\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646 \u062e\u0648\u062f\u06a9\u0627\u0631<\/strong><strong> Token <\/strong><strong>\u0628\u0627<\/strong><strong> Interceptor<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 Token \u0631\u0648 \u0647\u0646\u06af\u0627\u0645 \u0635\u062f\u0627 \u0632\u062f\u0646 API \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0627\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0628\u0627\u0631 \u06cc\u06a9 AuthInterceptor \u0633\u0627\u062e\u062a\u06cc\u0645 \u062a\u0627 Token \u0631\u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0627\u0636\u0627\u0641\u0647 \u0628\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class AuthInterceptor(\n\n\u00a0\u00a0\u00a0 private val storage: DataStoreManager\n\n) : Interceptor<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AuthInterceptor<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> storage: <\/span><span style=\"color: #6F42C1\">DataStoreManager<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) : <\/span><span style=\"color: #6F42C1\">Interceptor<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Interceptor \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u0647\u0631 Request \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647. Token \u0631\u0648 \u0627\u0632 DataStore \u0645\u06cc\u200c\u062e\u0648\u0646\u0647\u060c Header \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Authorization \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f Request \u0631\u0648 \u0628\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Repository \u062f\u06cc\u06af\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0631 \u0647\u0631 \u062a\u0627\u0628\u0639 Token \u0631\u0648 \u062f\u0633\u062a\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0627\u0631\u0633\u0627\u0644 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/strong><strong> Login <\/strong><strong>\u0646\u0628\u0627\u06cc\u062f<\/strong><strong> Token <\/strong><strong>\u0628\u06af\u06cc\u0631\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Interceptor \u0645\u0633\u06cc\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val isLoginRequest =\n\n\u00a0\u00a0\u00a0 originalRequest\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .url\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .encodedPath\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .endsWith(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\/login.php\"\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> isLoginRequest <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 originalRequest<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .url<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .encodedPath<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">endsWith<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;\/login.php&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 Token \u0647\u0646\u0648\u0632 \u0648\u0627\u0631\u062f \u062d\u0633\u0627\u0628 \u0646\u0634\u062f\u06cc\u0645\u060c \u067e\u0633 \u0645\u0646\u0637\u0642\u06cc \u0646\u06cc\u0633\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a Login \u062e\u0648\u062f\u0634 Header \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Token \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u06af\u0631 \u0645\u0633\u06cc\u0631 login.php \u0628\u0627\u0634\u0647\u060c Interceptor Token \u0631\u0648 \u0628\u0647 Request \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062e\u0648\u0627\u0646\u062f\u0646<\/strong><strong> Token <\/strong><strong>\u062f\u0631<\/strong><strong> Interceptor <\/strong><strong>\u0628\u0627 <\/strong><strong>runBlocking<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 intercept \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0645\u0639\u0645\u0648\u0644\u06cc \u0648 \u063a\u06cc\u0631 suspend \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062e\u0648\u0627\u0646\u062f\u0646 DataStore \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a Suspend \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0646 \u062f\u0648 \u0627\u0632:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>runBlocking {\n\n\u00a0\u00a0\u00a0 storage.getToken()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">runBlocking<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 storage.<\/span><span style=\"color: #6F42C1\">getToken<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. runBlocking \u062a\u0627 \u0632\u0645\u0627\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a Token \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 Thread \u0634\u0628\u06a9\u0647 \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u0641\u0647\u0645 \u062c\u0631\u06cc\u0627\u0646 \u0622\u0645\u0648\u0632\u0634\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0648\u0644\u06cc \u0646\u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 Thread \u0627\u0635\u0644\u06cc UI \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0634\u0647. \u0627\u06cc\u0646\u062c\u0627 Interceptor \u0631\u0648\u06cc Thread \u0634\u0628\u06a9\u0647 OkHttp \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> Request <\/strong><strong>\u062c\u062f\u06cc\u062f \u0628\u0627 <\/strong><strong>newBuilder<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Request\u0647\u0627\u06cc OkHttp \u0628\u0639\u062f \u0627\u0632 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06cc\u0633\u062a\u0646. \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Header \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val requestBuilder =\n\n\u00a0\u00a0\u00a0 originalRequest\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .newBuilder()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> requestBuilder <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 originalRequest<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">newBuilder<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Builder \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0642\u0627\u0628\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0632 Request \u0642\u0628\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0639\u062f Header \u0631\u0648 \u0631\u0648\u06cc \u0627\u0648\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 Request \u062c\u062f\u06cc\u062f \u0631\u0648 \u0628\u0627 build \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646<\/strong><strong> Header <\/strong><strong>\u0628\u0627 <\/strong><strong>header<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Token \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0628\u0647 Request \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>requestBuilder.header(\n\n\u00a0\u00a0\u00a0 \"Authorization\",\n\n\u00a0\u00a0\u00a0 \"Bearer $token\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">requestBuilder.<\/span><span style=\"color: #6F42C1\">header<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;Authorization&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;Bearer <\/span><span style=\"color: #005CC5\">$token<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 header \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0645\u0642\u062f\u0627\u0631 Header \u0628\u0627 \u0647\u0645\u06cc\u0646 \u0646\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0628\u0634\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b Header \u062f\u06cc\u06af\u0631\u06cc \u0628\u0627 \u0646\u0627\u0645 Authorization \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0686\u0646\u062f \u0645\u0642\u062f\u0627\u0631 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0633\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u062f\u0627\u0645\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 <\/strong><strong>chain.proceed<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 Request \u062c\u062f\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u0628\u062f\u06cc\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0627\u0642\u0639\u0627\u064b \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>return chain.proceed(\n\n\u00a0\u00a0\u00a0 requestBuilder.build()\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> chain.<\/span><span style=\"color: #6F42C1\">proceed<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 requestBuilder.<\/span><span style=\"color: #6F42C1\">build<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 chain.proceed \u0631\u0648 \u0635\u062f\u0627 \u0646\u0632\u0646\u06cc\u0645\u060c \u062c\u0631\u06cc\u0627\u0646 \u0634\u0628\u06a9\u0647 \u0647\u0645\u0648\u0646\u200c\u062c\u0627 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u0634\u0647 \u0648 \u0647\u06cc\u0686 Request\u0627\u06cc \u0628\u0647 \u0633\u0631\u0648\u0631 \u0646\u0645\u06cc\u200c\u0631\u0633\u0647. Interceptor \u0641\u0642\u0637 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u0627\u0631\u0633\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 proceed \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062d\u0630\u0641 <\/strong><strong>@Header <\/strong><strong>\u0627\u0632 \u062a\u0627\u0628\u0639 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 Interceptor \u062e\u0648\u062f\u0634 Token \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u062a\u0627\u0628\u0639 API \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0634\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@GET(\"profile.php\")\n\nsuspend fun getProfile():\n\n\u00a0\u00a0\u00a0 Response&lt;ProfileResponse>\n\n\u062f\u06cc\u06af\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0631 \u0647\u0631 \u0628\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:\n\n@Header(\"Authorization\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@GET<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;profile.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getProfile<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Response<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">ProfileResponse<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u062f\u06cc\u06af\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0631 \u0647\u0631 \u0628\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">@Header<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;Authorization&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0641\u0627\u06cc\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc Interceptor \u0627\u0633\u062a: \u0645\u0646\u0637\u0642 \u0645\u0634\u062a\u0631\u06a9 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06cc\u06a9 \u0628\u0627\u0631 \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0631\u0648\u06cc \u062a\u0645\u0627\u0645 Request\u0647\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a\u200c\u0634\u062f\u0647 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062e\u0641\u06cc \u06a9\u0631\u062f\u0646<\/strong><strong> Authorization <\/strong><strong>\u062f\u0631<\/strong><strong> Logcat<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 Logging \u0631\u0648\u06cc \u0633\u0637\u062d BODY \u0641\u0639\u0627\u0644\u0647\u060c \u0645\u0645\u06a9\u0646\u0647 Header\u0647\u0627 \u0647\u0645 \u062f\u0627\u062e\u0644 Logcat \u062f\u06cc\u062f\u0647 \u0628\u0634\u0646. \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0686\u0627\u067e \u0634\u062f\u0646 JWT \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>redactHeader(\n\n\u00a0\u00a0\u00a0 \"Authorization\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">redactHeader<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;Authorization&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0642\u062f\u0627\u0631 Header \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Token \u0631\u0648 \u062f\u0631 Log \u0645\u062e\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062e\u0648\u062f Request \u0647\u0645\u0686\u0646\u0627\u0646 Token \u0631\u0648 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647\u060c \u0627\u0645\u0627 \u0645\u0642\u062f\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0627\u0648\u0646 \u062f\u0627\u062e\u0644 Logcat \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0647\u0645\u06cc\u062a \u062a\u0631\u062a\u06cc\u0628<\/strong><strong> Interceptor<\/strong><strong>\u0647\u0627<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 AuthInterceptor \u0648 \u0628\u0639\u062f Logging Interceptor \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.addInterceptor(\n\n\u00a0\u00a0\u00a0 authInterceptor\n\n)\n\n.addInterceptor(\n\n\u00a0\u00a0\u00a0 loggingInterceptor\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addInterceptor<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 authInterceptor<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">addInterceptor<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 loggingInterceptor<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Interceptor \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0648\u0644 Token \u0631\u0648 \u0631\u0648\u06cc Request \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647 \u0648 Logging \u0628\u0639\u062f\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0646\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0686\u0648\u0646 Authorization \u0631\u0648 Redact \u06a9\u0631\u062f\u06cc\u0645\u060c Logging \u0645\u06cc\u200c\u0641\u0647\u0645\u0647 Header \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0627\u0645\u0627 \u0645\u0642\u062f\u0627\u0631 \u062d\u0633\u0627\u0633 \u0627\u0648\u0646 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0646\u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u0644\u0627\u0633 <\/strong><strong>AppContainer<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0633\u0627\u062e\u062a DataStore\u060c SessionManager\u060c Interceptor\u060c Retrofit \u0648 Repository \u062f\u0627\u062e\u0644 MainActivity \u067e\u062e\u0634 \u0646\u0634\u0647\u060c \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0627\u062f\u0647 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class AppContainer(\n\n\u00a0\u00a0\u00a0 context: Context\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppContainer<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 context: <\/span><span style=\"color: #6F42C1\">Context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 Object\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u06cc\u06a9 \u0628\u0627\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647 \u0648 \u0628\u0647 \u0647\u0645 \u0648\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0647\u0645\u0627\u0646 DataStoreManager \u0628\u0647 SessionManager \u0648 AuthInterceptor \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0645\u0627\u0645 \u0628\u062e\u0634\u200c\u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0648\u0635\u0644 \u0647\u0633\u062a\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0627\u0632 <\/strong><strong>applicationContext <\/strong><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Container \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">context.applicationContext<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 DataStore\u060c SharedPreferences \u0648 Retrofit \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0639\u0645\u0631 \u06cc\u06a9 Activity \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0646. applicationContext \u062a\u0627 \u0632\u0645\u0627\u0646 \u0632\u0646\u062f\u0647 \u0628\u0648\u062f\u0646 \u06a9\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0648 \u0628\u0627 \u0686\u0631\u062e\u0634 \u0635\u0641\u062d\u0647 \u06cc\u0627 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 Activity \u0627\u0632 \u0628\u06cc\u0646 \u0646\u0645\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <\/strong><strong>httpCode <\/strong><strong>\u0628\u0647 \u0645\u062f\u0644 \u067e\u0627\u0633\u062e<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u067e\u0627\u0633\u062e \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u062f\u0627\u062e\u0644\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val httpCode: Int? = null<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u06cc\u0644\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 JSON \u0633\u0631\u0648\u0631 \u0646\u0645\u06cc\u0627\u062f. Repository \u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a Response\u060c \u06a9\u062f HTTP \u0631\u0648 \u0628\u0627 copy \u062f\u0627\u062e\u0644 \u0645\u062f\u0644 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 ViewModel \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0641\u0647\u0645\u0647 \u062e\u0637\u0627 \u0645\u062b\u0644\u0627\u064b 401 \u0628\u0648\u062f\u0647 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u0648\u0646 Session \u0631\u0648 \u067e\u0627\u06a9 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646<\/strong><strong> Session <\/strong><strong>\u0647\u0646\u06af\u0627\u0645 \u067e\u0627\u0633\u062e 401<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u067e\u0627\u0633\u062e 401 \u0628\u06af\u06cc\u0631\u0647\u060c \u06cc\u0639\u0646\u06cc Token \u062f\u06cc\u06af\u0647 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (\n\n\u00a0\u00a0\u00a0 response.httpCode == 401\n\n) {\n\n\u00a0\u00a0\u00a0 sessionManager.logout()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 response.httpCode <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">401<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 sessionManager.<\/span><span style=\"color: #6F42C1\">logout<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0641\u0642\u0637 \u0646\u0645\u0627\u06cc\u0634 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u0628\u0627\u06cc\u062f Token \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0632 DataStore \u062d\u0630\u0641 \u0628\u0634\u0647 \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0635\u0641\u062d\u0647 Login \u0628\u0631\u06af\u0631\u062f\u0647\u061b \u0648\u06af\u0631\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0627\u062c\u0631\u0627\u06cc \u0628\u0639\u062f\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u0647\u0645\u0648\u0646 Token \u062e\u0631\u0627\u0628 \u0631\u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647<\/strong><strong> Dark Mode <\/strong><strong>\u062f\u0631<\/strong><strong> DataStore<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 DataStore \u0641\u0642\u0637 \u0645\u062d\u062f\u0648\u062f \u0628\u0647 Token \u0646\u0628\u0627\u0634\u0647\u060c \u062d\u0627\u0644\u062a \u062a\u0627\u0631\u06cc\u06a9 \u0631\u0648 \u0647\u0645 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>preferences&#91;darkModeKey&#93; =\n\n\u00a0\u00a0\u00a0 enabled<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">preferences&#91;darkModeKey&#93; <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 enabled<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0628\u0627\u0631 Switch \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u062f\u0627\u062e\u0644 DataStore \u062b\u0628\u062a \u0645\u06cc\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062d\u062a\u06cc \u0628\u0639\u062f \u0627\u0632 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u063a\u06cc\u06cc\u0631<\/strong><strong> Theme <\/strong><strong>\u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0631\u06cc\u0634\u0647 UI \u0628\u0631\u0627\u0633\u0627\u0633 \u0645\u0642\u062f\u0627\u0631 DataStore \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645 \u06a9\u062f\u0648\u0645 Color Scheme \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (\n\n\u00a0\u00a0\u00a0 state.preferences.darkMode\n\n) {\n\n\u00a0\u00a0\u00a0 darkColorScheme()\n\n} else {\n\n\u00a0\u00a0\u00a0 lightColorScheme()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 state.preferences.darkMode<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">darkColorScheme<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">} <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">lightColorScheme<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 ViewModel \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a DataStore \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u062a\u063a\u06cc\u06cc\u0631 Switch \u0628\u0627\u0639\u062b \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc State \u0648 Recomposition \u0645\u06cc\u0634\u0647 \u0648 Theme \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u0648\u0646 \u0644\u062d\u0638\u0647 \u0639\u0648\u0636 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a \u0630\u062e\u06cc\u0631\u0647<\/strong><strong> Session <\/strong><strong>\u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0645\u0646<\/strong><strong> Token<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0648\u062c\u0648\u062f \u0639\u0646\u0648\u0627\u0646 \u062f\u0631\u0633\u060c \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642 \u0628\u062f\u0648\u0646\u06cc\u0645 \u06a9\u0647 Preferences DataStore \u0628\u0647\u200c\u062a\u0646\u0647\u0627\u06cc\u06cc Token \u0631\u0648 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 Token \u0631\u0648 \u062f\u0627\u0626\u0645\u06cc\u060c \u0645\u0631\u062a\u0628 \u0648 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u0627 Flow \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0627\u0632 \u0686\u0627\u067e \u0634\u062f\u0646\u0634 \u062f\u0627\u062e\u0644 Log \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0631\u062f\u06cc\u0645\u061b \u0627\u0645\u0627 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0648\u062f\u0634 \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc\u200c\u0634\u062f\u0647 \u0646\u06cc\u0633\u062a. \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062d\u0633\u0627\u0633\u060c \u0628\u0627\u06cc\u062f \u0631\u0645\u0632\u0646\u06af\u0627\u0631\u06cc \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 Android Keystore \u06cc\u0627 \u0631\u0627\u0647\u06a9\u0627\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0645\u0646\u0627\u0633\u0628 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f3<br>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u06cc\u06a9 \u0645\u0633\u06cc\u0631 \u06a9\u0627\u0645\u0644 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose<br>\u2193<br>ViewModel<br>\u2193<br>Repository<br>\u2193<br>Retrofit<br>\u2193<br>API Server<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0647\u0645\u06cc\u0634\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0645\u0648\u0641\u0642 \u0646\u06cc\u0633\u062a. \u06af\u0627\u0647\u06cc:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u06a9\u0627\u0631\u0628\u0631 \u0642\u0637\u0639 \u0627\u0633\u062a<\/li>\n\n\n\n<li>\u0633\u0631\u0648\u0631 \u062e\u0627\u0645\u0648\u0634 \u0627\u0633\u062a<\/li>\n\n\n\n<li>Token \u06a9\u0627\u0631\u0628\u0631 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647<\/li>\n\n\n\n<li>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u06cc\u0644\u06cc \u0637\u0648\u0644 \u0645\u06cc\u200c\u06a9\u0634\u062f<\/li>\n\n\n\n<li>\u0633\u0631\u0648\u0631 \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0645\u06cc\u200c\u062f\u0647\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u06a9\u0646\u06cc\u0645\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 Crash \u0645\u06cc\u200c\u06a9\u0646\u062f \u06cc\u0627 \u0631\u0641\u062a\u0627\u0631 \u0646\u0627\u0645\u0634\u062e\u0635\u06cc \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u0634\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0633\u0627\u062f\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u062f\u0627\u062e\u0644 Repository:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>override suspend fun getUsers()\n: List&lt;User>{\n\n    return api.getUsers()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0631\u06cc\u0645. \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0634\u0648\u062f \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u200c\u0627\u0641\u062a\u062f\u061f Retrofit \u06cc\u06a9 Exception \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java.io.IOException\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0622\u0646 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u06a9\u0646\u06cc\u0645 App Crash \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0646\u0648\u0627\u0639 \u062e\u0637\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0686\u0646\u062f \u062f\u0633\u062a\u0647 \u062e\u0637\u0627 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f1. \u062e\u0637\u0627\u0647\u0627\u06cc HTTP Server<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u200c\u0647\u0627 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062e\u0648\u062f \u0633\u0631\u0648\u0631 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">200<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0648\u0641\u0642:<br>Request \u0645\u0648\u0641\u0642 \u0628\u0648\u062f<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">401 Unauthorized<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u062c\u0627\u0632\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0646\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Token \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Token \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n \"message\":\"Token expired\"\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;message&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Token expired&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">404 Not Found<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u0633\u06cc\u0631 API \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f. \u0645\u062b\u0644\u0627\u064b users.php \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">500 Server Error<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u0634\u06a9\u0644 \u0627\u0632 \u062e\u0648\u062f \u0633\u0631\u0648\u0631 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u062e\u0637\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n\n\n\n<li>Exception \u062f\u0631 PHP<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f2. IOException<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062e\u0637\u0627 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Android\n\nX\n\nServer\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627Retrofit  \u062e\u0637\u0627\u06cc IOException \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f3. Timeout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0645\u0627 \u0633\u0631\u0648\u0631 \u062e\u06cc\u0644\u06cc \u062f\u06cc\u0631 \u062c\u0648\u0627\u0628 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request\n\u2193\nWaiting...\n\u2193\n20 seconds\n\u2193\nTimeout<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u06af\u0648\u06cc\u06cc\u0645 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0637\u0648\u0644 \u06a9\u0634\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Try Catch<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>try {\n\n    val users =\n        api.getUsers()\n\n}\n\ncatch(e:Exception){\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">try<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0633\u0639\u06cc \u06a9\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647. \u0627\u06af\u0631 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0634\u062a \u0628\u06cc\u0627 \u062f\u0627\u062e\u0644 catch.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 Try Catch \u0633\u0627\u062f\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>catch(e:Exception){\n\n    showError()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">showError<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u0686\u0648\u0646 \u0647\u0645\u0647 \u062e\u0637\u0627\u0647\u0627 \u06cc\u06a9\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f. \u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u0646\u200c\u0647\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0647\u0633\u062a\u0646\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Internet \u0642\u0637\u0639 \u0634\u062f\u0647<br>Server \u062e\u0631\u0627\u0628 \u0627\u0633\u062a<br>Token \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Result \u0627\u062e\u062a\u0635\u0627\u0635\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0645\u062f\u0644 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class Result&lt;out T>{\n\n\n    data class Success&lt;T>(\n\n        val data:T\n\n    ):Result&lt;T>\n\n\n\n    data class Error(\n\n        val message:String\n\n    ):Result&lt;Nothing>\n\n\n    object Loading:\n\n    Result&lt;Nothing>()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">sealed<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Result<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">out<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt;(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">T<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ):<\/span><span style=\"color: #6F42C1\">Result<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    ):<\/span><span style=\"color: #6F42C1\">Result<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Nothing<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Loading<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">Result<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Nothing<\/span><span style=\"color: #24292E\">&gt;()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0633\u0647 \u0648\u0636\u0639\u06cc\u062a \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Loading<\/strong><br>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Success<\/strong><br>\u0645\u0648\u0641\u0642<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Success(\n users\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> users<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Error:<\/strong><br>\u062e\u0637\u0627<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Error(\n \"Internet Error\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;Internet Error&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getUsers():\n\nList&lt;User>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0634\u062a\u06cc\u0645. \u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getUsers():\n\nResult&lt;List&lt;User>>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Result<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Repository<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>override suspend fun getUsers():\n\nResult&lt;List&lt;User>>{\n\n\nreturn try {\n\n\n    val response =\n    api.getUsers()\n\n\n\n    Result.Success(\n        response\n    )\n\n\n}\n\n\ncatch(e:IOException){\n\n\n    Result.Error(\n        \"Internet Error\"\n    )\n\n\n}\n\n\ncatch(e:Exception){\n\n\n    Result.Error(\n        \"Unknown Error\"\n    )\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Result<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">try<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> response <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    api.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Result.<\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        response<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">IOException<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Result.<\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;Internet Error&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Result.<\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;Unknown Error&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc HTTP Error<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit \u0628\u0631\u0627\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc HTTP \u06cc\u06a9 Exception \u0628\u0647 \u0646\u0627\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HttpException\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>catch(e:HttpException){\n\n\n    when(e.code()){\n\n\n        401 -> {\n\n        }\n\n\n        500 -> {\n\n        }\n\n\n    }\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">HttpException<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(e.<\/span><span style=\"color: #6F42C1\">code<\/span><span style=\"color: #24292E\">()){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #005CC5\">401<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #005CC5\">500<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Error Handler<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Repository\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0646\u0634\u0648\u0646\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062c\u062f\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NetworkErrorHandler.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NetworkErrorHandler{\n\n\nfun handle(\ne:Exception\n):String{\n\n\nreturn when(e){\n\n\nis IOException ->\n\n\"Internet connection failed\"\n\n\n\nis HttpException ->\n\nwhen(e.code()){\n\n\n401 ->\n\"Please Login Again\"\n\n\n500 ->\n\"Server Error\"\n\n\nelse ->\n\"Unknown Server Error\"\n\n\n}\n\n\n\nelse ->\n\"Something went wrong\"\n\n\n\n}\n\n\n}\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NetworkErrorHandler<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">handle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(e){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> IOException <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Internet connection failed&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> HttpException <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(e.<\/span><span style=\"color: #6F42C1\">code<\/span><span style=\"color: #24292E\">()){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #005CC5\">401<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Please Login Again&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #005CC5\">500<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Server Error&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Unknown Server Error&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Something went wrong&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0645\u0647 Repository\u0647\u0627 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 ViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0641\u0642\u0637 State \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun loadUsers(){\n\n\nviewModelScope.launch {\n\n\n_state.value =\nUiState.Loading\n\n\n\nwhen(\nval result =\nrepository.getUsers()\n\n){\n\n\nis Result.Success -> {\n\n\n_state.value =\nUiState.Success(\nresult.data\n)\n\n\n}\n\n\n\nis Result.Error -> {\n\n\n_state.value =\nUiState.Error(\nresult.message\n)\n\n\n}\n\n\n}\n\n\n}\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">loadUsers<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">UiState.Loading<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> result <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">repository.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> Result.Success <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">UiState.<\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">result.<\/span><span style=\"color: #D73A49\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> Result.Error <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">UiState.<\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">result.message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a UI State<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class UiState{\n\n\nobject Loading:\nUiState()\n\n\n\ndata class Success(\n\nval users:List&lt;User>\n\n):UiState()\n\n\n\ndata class Error(\n\nval message:String\n\n):UiState()\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">sealed<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">UiState<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Loading<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">UiState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> users:<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">UiState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">UiState<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627 \u062f\u0631 Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 UI:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when(state){\n\n\nis UiState.Loading -> {\n\n\nCircularProgressIndicator()\n\n\n}\n\n\n\nis UiState.Success -> {\n\n\nUserList(\nstate.users\n)\n\n\n}\n\n\n\nis UiState.Error -> {\n\n\nText(\nstate.message\n)\n\n\n}\n\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\">(state){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UiState.Loading <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">CircularProgressIndicator<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UiState.Success <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">UserList<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">state.users<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UiState.Error <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Text<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">state.message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0635\u0641\u062d\u0647 \u0642\u06cc\u0645\u062a \u062f\u0644\u0627\u0631 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631\u062e\u0648\u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/prices\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u0627\u0648\u0644\u060c \u0633\u0631\u0648\u0631 \u062c\u0648\u0627\u0628 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n\"price\":60000\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;price&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">60000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0627\u06cc\u0634 \u0642\u06cc\u0645\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u062f\u0648\u0645 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0627\u0633\u062a. \u0646\u062a\u06cc\u062c\u0647 IOException \u0646\u0645\u0627\u06cc\u0634 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u0633\u0648\u0645 Token \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 401 \u0646\u0645\u0627\u06cc\u0634 \u0644\u0637\u0641\u0627\u064b \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u0686\u0647\u0627\u0631\u0645 \u0633\u0631\u0648\u0631 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u062f 500 \u0646\u0645\u0627\u06cc\u0634 \u0645\u0634\u06a9\u0644\u06cc \u062f\u0631 \u0633\u0631\u0648\u0631 \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0631\u0633<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>data\n\n \u251c\u2500\u2500 network\n\n \u2502    \u251c\u2500\u2500 ApiService\n\n \u2502    \u2514\u2500\u2500 ErrorHandler\n\n\n \u2514\u2500\u2500 repository\n\n      \u2514\u2500\u2500 UserRepository\n\n\n\ndomain\n\n \u2514\u2500\u2500 Result.kt\n\n\n\npresentation\n\n \u2514\u2500\u2500 UiState.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0686\u0646\u062f \u0648\u0636\u0639\u06cc\u062a \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 <\/strong><strong>mode<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0648\u0639 \u062e\u0637\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 PHP \u062c\u062f\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0628\u0647 \u0646\u0627\u0645 mode \u0628\u0631\u0627\u06cc API \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$mode =\n\n\u00a0\u00a0\u00a0 isset($_GET&#91;\"mode\"&#93;)\n\n\u00a0\u00a0\u00a0 ? $_GET&#91;\"mode\"&#93;\n\n\u00a0\u00a0\u00a0 : \"success\";\n\n\u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0646 \u0628\u0627\u0634\u0647:\n\nerror_demo.php?mode=server_error<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">$mode <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">isset<\/span><span style=\"color: #24292E\">($_GET&#91;<\/span><span style=\"color: #032F62\">&quot;mode&quot;<\/span><span style=\"color: #24292E\">&#93;)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ? $_GET&#91;<\/span><span style=\"color: #032F62\">&quot;mode&quot;<\/span><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 : <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0646 \u0628\u0627\u0634\u0647:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">error_demo.php?mode<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\">server_error<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u062f\u0627\u0631 mode \u0628\u0631\u0627\u0628\u0631 server_error \u0645\u06cc\u0634\u0647. \u0627\u06af\u0631 \u0647\u06cc\u0686 \u0645\u0642\u062f\u0627\u0631\u06cc \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u062d\u0627\u0644\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 success \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647. \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u062a\u0648\u0646\u06cc\u0645 \u0628\u0627 \u06cc\u06a9 Endpoint\u060c \u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642\u060c \u062e\u0637\u0627\u06cc \u06f4\u06f0\u06f1\u060c \u062e\u0637\u0627\u06cc \u06f4\u06f0\u06f4\u060c \u062e\u0637\u0627\u06cc \u06f5\u06f0\u06f0 \u0648 Timeout \u0631\u0648 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>switch <\/strong><strong>\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0641\u0627\u06cc\u0644 PHP \u0627\u0632 switch \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>switch ($mode) {\n\n\u00a0\u00a0\u00a0 case \"success\":\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ \u067e\u0627\u0633\u062e 200\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\n\u00a0\u00a0\u00a0 case \"unauthorized\":\n\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\/\/ \u067e\u0627\u0633\u062e 401\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\n\u00a0\u00a0\u00a0 case \"server_error\":\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ \u067e\u0627\u0633\u062e 500\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">switch<\/span><span style=\"color: #24292E\"> ($mode) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 case <\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6A737D\">\/\/ \u067e\u0627\u0633\u062e 200<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">break<\/span><span style=\"color: #24292E\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 case <\/span><span style=\"color: #032F62\">&quot;unauthorized&quot;<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #6A737D\">\/\/ \u067e\u0627\u0633\u062e 401<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">break<\/span><span style=\"color: #24292E\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 case <\/span><span style=\"color: #032F62\">&quot;server_error&quot;<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6A737D\">\/\/ \u067e\u0627\u0633\u062e 500<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">break<\/span><span style=\"color: #24292E\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">switch \u0645\u0642\u062f\u0627\u0631 mode \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0641\u0642\u0637 \u0628\u062e\u0634 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0647\u0645\u0627\u0646 \u062d\u0627\u0644\u062a \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646\u062c\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 switch \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 if \u067e\u0634\u062a\u200c\u0633\u0631\u0647\u0645\u0647\u060c \u0686\u0648\u0646 \u062a\u0645\u0627\u0645 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u0634\u062e\u0635 \u0648 \u0645\u062d\u062f\u0648\u062f \u0647\u0633\u062a\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u06cc\u062c\u0627\u062f<\/strong><strong> Timeout <\/strong><strong>\u0648\u0627\u0642\u0639\u06cc \u0628\u0627 <\/strong><strong>sleep<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u06a9\u0646\u062f \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sleep(\n\n\u00a0\u00a0\u00a0 8\n\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">sleep<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">8<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 PHP \u0647\u0634\u062a \u062b\u0627\u0646\u06cc\u0647 \u0635\u0628\u0631 \u0628\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u067e\u0627\u0633\u062e \u0628\u062f\u0647. \u0627\u0632 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631\u060c \u062f\u0631 OkHttp \u0632\u0645\u0627\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u067e\u0627\u0633\u062e \u0631\u0648 \u0633\u0647 \u062b\u0627\u0646\u06cc\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0631\u0633\u06cc\u062f\u0646 \u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u06cc\u06a9 \u062e\u0637\u0627\u06cc Timeout \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u062f\u0641 \u0627\u0632 sleep \u0627\u06cc\u0646 \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0633\u0631\u0648\u0631 \u0631\u0648 \u06a9\u0646\u062f \u06a9\u0646\u06cc\u0645\u061b \u0641\u0642\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u06a9\u0646\u062f \u0686\u0647 \u0631\u0641\u062a\u0627\u0631\u06cc \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0639\u0631\u06cc\u0641 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627 \u0628\u0627 <\/strong><strong>enum class<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0646\u0648\u0627\u0639 \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u0627\u06cc\u0646 Enum \u0631\u0648 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>enum class ErrorScenario(\n\n\u00a0\u00a0\u00a0 val apiValue: String?\n\n) {\n\n\u00a0\u00a0\u00a0 Success(\"success\"),\n\n\u00a0\u00a0\u00a0 Unauthorized(\"unauthorized\"),\n\n\u00a0\u00a0\u00a0 NotFound(\"not_found\"),\n\n\u00a0\u00a0\u00a0 ServerError(\"server_error\"),\n\n\u00a0\u00a0\u00a0 Timeout(\"timeout\"),\n\n\u00a0\u00a0\u00a0 NetworkError(null)\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">enum<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ErrorScenario<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> apiValue: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;success&quot;<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Unauthorized<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;unauthorized&quot;<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">NotFound<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;not_found&quot;<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">ServerError<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;server_error&quot;<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Timeout<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;timeout&quot;<\/span><span style=\"color: #24292E\">),<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">NetworkError<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">null<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0631 \u0642\u0633\u0645\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0634\u062a\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 &#8220;server_error&#8221; \u0631\u0648 \u062f\u0633\u062a\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u0647\u0631 \u062d\u0627\u0644\u062a \u0631\u0648 \u0628\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0634\u062e\u0635 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062c\u0644\u0648\u06cc \u063a\u0644\u0637 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 ViewModel \u0648 UI \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0634\u062e\u0635\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u06cc\u0698\u06af\u06cc apiValue \u0647\u0645 \u0645\u0642\u062f\u0627\u0631\u06cc\u0647 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc PHP \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0628\u0634\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ErrorScenario.ServerError.apiValue<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u0628\u0631 \u0627\u06cc\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">server_error<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>apiValue <\/strong><strong>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f <\/strong><strong>null <\/strong><strong>\u0628\u0627\u0634\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062d\u0627\u0644\u062a \u0642\u0637\u0639 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>NetworkError(\n\n\u00a0\u00a0\u00a0 apiValue = null\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">NetworkError<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 apiValue <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0628\u0634\u0647. \u062e\u0637\u0627\u06cc \u0642\u0637\u0639 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc Request \u062f\u0627\u062e\u0644 \u062e\u0648\u062f Repository \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0646\u0627\u0631\u06cc\u0648 \u0627\u0635\u0644\u0627\u064b \u0645\u0642\u062f\u0627\u0631 mode \u0646\u062f\u0627\u0631\u06cc\u0645 \u0648 apiValue \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 null \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0631\u0633\u0627\u0644<\/strong><strong> Query Parameter <\/strong><strong>\u0628\u0627 <\/strong><strong>@Query<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Retrofit \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@GET(\"error_demo.php\")\n\nsuspend fun getUsers(\n\n\u00a0\u00a0\u00a0 @Query(\"mode\")\n\n\u00a0\u00a0\u00a0 mode: String\n\n): UsersResponse<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@GET<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;error_demo.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">@Query<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;mode&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 mode: <\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">): <\/span><span style=\"color: #6F42C1\">UsersResponse<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">@Query(&#8220;mode&#8221;) \u0628\u0647 Retrofit \u0645\u06cc\u06af\u0647 \u0645\u0642\u062f\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 mode \u0631\u0648 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc URL \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646. \u0645\u062b\u0644\u0627\u064b \u0648\u0642\u062a\u06cc \u0645\u0642\u062f\u0627\u0631 \u062a\u0627\u0628\u0639 server_error \u0628\u0627\u0634\u0647\u060c Retrofit \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">error_demo.php?mode=server_error<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a URL \u0631\u0648 \u062e\u0648\u062f\u0645\u0648\u0646 \u0628\u0627 \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0631\u0634\u062a\u0647\u200c\u0647\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. Retrofit \u0646\u0627\u0645 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u060c \u0645\u0642\u062f\u0627\u0631\u0634 \u0648 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u062f\u0631\u0633\u062a URL \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0646\u062a\u06cc\u062c\u0647 \u0628\u0627 <\/strong><strong>AppResult<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 Repository \u06af\u0627\u0647\u06cc \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 \u06af\u0627\u0647\u06cc Exception \u067e\u0631\u062a\u0627\u0628 \u0628\u06a9\u0646\u0647\u060c \u06cc\u06a9 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class AppResult&lt;out T> {\n\n\u00a0\u00a0\u00a0 data class Success&lt;T>(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 val data: T\n\n\u00a0\u00a0\u00a0 ) : AppResult&lt;T>()\n\n\u00a0\u00a0\u00a0 data class Error(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 val message: String\n\n\u00a0\u00a0\u00a0 ) : AppResult&lt;Nothing>()\n\n\u00a0\u00a0\u00a0 object Loading :\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 AppResult&lt;Nothing>()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">sealed<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppResult<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">out<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt; {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt;(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">: <\/span><span style=\"color: #6F42C1\">T<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ) : <\/span><span style=\"color: #6F42C1\">AppResult<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">T<\/span><span style=\"color: #24292E\">&gt;()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message: <\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ) : <\/span><span style=\"color: #6F42C1\">AppResult<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Nothing<\/span><span style=\"color: #24292E\">&gt;()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">object<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Loading<\/span><span style=\"color: #24292E\"> :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">AppResult<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Nothing<\/span><span style=\"color: #24292E\">&gt;()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u062e\u0631\u0648\u062c\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0641\u0642\u0637 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0647 \u062d\u0627\u0644\u062a\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Loading<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Success<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Error<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 ViewModel \u0648 UI \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u062f\u0648\u0646\u0646 \u062f\u0631 \u0647\u0631 \u0644\u062d\u0638\u0647 \u0628\u0627\u06cc\u062f \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0639\u0646\u06cc <\/strong><strong>&lt;out T&gt;<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 AppResult \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult&lt;out T&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">T \u0646\u0648\u0639 \u062f\u0627\u062f\u0647 \u0645\u0648\u0641\u0642\u06cc\u062a\u0647. \u0645\u062b\u0644\u0627\u064b \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0646\u0648\u0639 \u0646\u0647\u0627\u06cc\u06cc \u0627\u06cc\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult&lt;List&lt;User&gt;&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0645\u0647 out \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u062f\u0647 \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u062f\u0627\u062f\u0647 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0634\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0645\u0642\u062f\u0627\u0631 T \u0631\u0648 \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645\u061b \u0641\u0642\u0637 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u0648\u0641\u0642 \u0627\u0648\u0646 \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u06cc\u0645. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 out \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u062f\u0644 \u0646\u062a\u06cc\u062c\u0647 \u0645\u0646\u0627\u0633\u0628\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Error <\/strong><strong>\u0648<\/strong><strong> Loading <\/strong><strong>\u0627\u0632 <\/strong><strong>Nothing <\/strong><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a \u062e\u0637\u0627 \u0647\u06cc\u0686 \u062f\u0627\u062f\u0647 \u0645\u0648\u0641\u0642\u06cc \u0646\u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AppResult.Error(\n\n\u00a0\u00a0\u00a0 message = \"\u062e\u0637\u0627\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">AppResult.<\/span><span style=\"color: #6F42C1\">Error<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 message <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;\u062e\u0637\u0627&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u062a Loading \u0647\u0645 \u0647\u0646\u0648\u0632 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u06a9\u0631\u062f\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0647\u0631 \u062f\u0648 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult&lt;Nothing&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nothing \u06cc\u0639\u0646\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0627\u0635\u0644\u0627\u064b \u0645\u0642\u062f\u0627\u0631\u06cc \u0627\u0632 \u0646\u0648\u0639 \u062f\u0627\u062f\u0647 \u0627\u0635\u0644\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c Error \u0648 Loading \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u062f\u0627\u062e\u0644 State\u0627\u06cc \u0645\u062b\u0644 \u0627\u06cc\u0646 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult&lt;List&lt;User&gt;&gt;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u0631\u0627 <\/strong><strong>AppResult <\/strong><strong>\u06af\u0630\u0627\u0634\u062a\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f Kotlin \u06a9\u0644\u0627\u0633\u06cc \u0628\u0647 \u0646\u0627\u0645 Result \u062f\u0627\u0631\u0647. \u0627\u06af\u0631 \u06a9\u0644\u0627\u0633 \u062e\u0648\u062f\u0645\u0648\u0646 \u0631\u0648 \u0647\u0645 Result \u0645\u06cc\u200c\u0646\u0627\u0645\u06cc\u062f\u06cc\u0645\u060c \u0647\u0646\u06af\u0627\u0645 Import \u0648 \u062e\u0648\u0627\u0646\u062f\u0646 \u06a9\u062f \u0645\u0645\u06a9\u0646 \u0628\u0648\u062f \u0645\u0634\u062e\u0635 \u0646\u0628\u0627\u0634\u0647 \u0645\u0646\u0638\u0648\u0631 \u06a9\u062f\u0627\u0645 \u06a9\u0644\u0627\u0633 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062a\u062f\u0627\u062e\u0644 \u0646\u0627\u0645\u060c \u0627\u0632:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0646\u0627\u0645 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u06cc\u0646 \u0645\u062f\u0644 \u0646\u062a\u06cc\u062c\u0647 \u0645\u062e\u0635\u0648\u0635 \u062e\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Repository <\/strong><strong>\u062f\u06cc\u06af\u0631<\/strong><strong> Exception <\/strong><strong>\u0631\u0627 \u0628\u06cc\u0631\u0648\u0646 \u0646\u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc Repository \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getUsers(\n\n\u00a0\u00a0\u00a0 scenario: ErrorScenario\n\n): AppResult&lt;List&lt;User>><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 scenario: <\/span><span style=\"color: #6F42C1\">ErrorScenario<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">): <\/span><span style=\"color: #6F42C1\">AppResult<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">User<\/span><span style=\"color: #24292E\">&gt;&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Repository \u062a\u0645\u0627\u0645 \u062e\u0637\u0627\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u0633\u0631\u0648\u0631 \u0631\u0648 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0641\u0642\u0637 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u0648\u0631\u062f \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult.Success(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">AppResult.Error(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 ViewModel \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0628\u0627 IOException\u060c HttpException \u06cc\u0627 SocketTimeoutException \u062f\u0631\u06af\u06cc\u0631 \u0628\u0634\u0647. ViewModel \u0641\u0642\u0637 \u0646\u062a\u06cc\u062c\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f Repository \u0631\u0648 \u062f\u0627\u062e\u0644 State \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc <\/strong><strong>IOException<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0645\u0633\u06cc\u0631 \u062e\u0637\u0627\u06cc \u0642\u0637\u0639 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (\n\n\u00a0\u00a0\u00a0 scenario ==\n\n\u00a0\u00a0\u00a0 ErrorScenario.NetworkError\n\n) {\n\n\u00a0\u00a0\u00a0 throw IOException(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Simulated network error\"\n\n\u00a0\u00a0\u00a0 )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 scenario <\/span><span style=\"color: #D73A49\">==<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ErrorScenario.NetworkError<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">throw<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">IOException<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;Simulated network error&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062f \u0639\u0645\u062f\u0627\u064b \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0639\u062f catch \u0627\u0648\u0646 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0628\u0647 NetworkErrorHandler \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u0648 \u0646\u0645\u0627\u06cc\u0634 \u0642\u0627\u0628\u0644\u200c\u06a9\u0646\u062a\u0631\u0644 \u062e\u0637\u0627\u0633\u062a. \u062f\u0631 \u062d\u0627\u0644\u062a \u0648\u0627\u0642\u0639\u06cc\u060c \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0628\u0627\u0634\u0647 \u06cc\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u0634\u0628\u06a9\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u0647\u060c \u062e\u0648\u062f OkHttp \u06cc\u0627 Retrofit \u06cc\u06a9 IOException \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646 \u0648 \u0646\u06cc\u0627\u0632\u06cc \u0646\u06cc\u0633\u062a \u062e\u0648\u062f\u0645\u0648\u0646 \u0627\u0648\u0646 \u0631\u0648 \u067e\u0631\u062a\u0627\u0628 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Error Handler <\/strong><strong>\u0645\u0634\u062a\u0631\u06a9<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062e\u0644 \u0647\u0631 Repository \u0628\u0631\u0627\u06cc \u062e\u0637\u0627\u0647\u0627 \u0686\u0646\u062f\u06cc\u0646 catch \u0648 when \u062a\u06a9\u0631\u0627\u0631\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062c\u062f\u0627 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">class NetworkErrorHandler<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0638\u06cc\u0641\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0627\u06cc\u0646\u0647 \u06a9\u0647 Exception \u0641\u0646\u06cc \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u06a9\u0646\u0647 \u0648 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0642\u0627\u0628\u0644\u200c\u0641\u0647\u0645 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0628\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">SocketTimeoutException<br>\u2193<br>\u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0637\u0648\u0644 \u06a9\u0634\u06cc\u062f<br>\u06cc\u0627:<br>UnknownHostException<br>\u2193<br>\u0622\u062f\u0631\u0633 \u0633\u0631\u0648\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f \u06cc\u0627 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0627\u0633\u062a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0646\u0637\u0642 \u062a\u0634\u062e\u06cc\u0635 \u062e\u0637\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u062c\u0627 \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062a\u0645\u0627\u0645 Repository\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0627\u0632 \u0647\u0645\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a \u062e\u0637\u0627\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 NetworkErrorHandler \u0686\u0646\u062f \u0646\u0648\u0639 \u062e\u0637\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0631\u0648 \u062c\u062f\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>SocketTimeoutException\n\nUnknownHostException\n\nConnectException\n\nIOException<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">SocketTimeoutException<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">UnknownHostException<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">ConnectException<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">IOException<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">SocketTimeoutException \u06cc\u0639\u0646\u06cc \u0633\u0631\u0648\u0631 \u062f\u0631 \u0632\u0645\u0627\u0646 \u062a\u0639\u06cc\u06cc\u0646\u200c\u0634\u062f\u0647 \u067e\u0627\u0633\u062e \u0646\u062f\u0627\u062f\u0647. UnknownHostException \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u0639\u0646\u06cc \u062f\u0627\u0645\u0646\u0647 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u0647\u060c DNS \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u0647 \u06cc\u0627 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0634\u062f\u0647. ConnectException \u06cc\u0639\u0646\u06cc \u0622\u062f\u0631\u0633 \u067e\u06cc\u062f\u0627 \u0634\u062f\u0647\u060c \u0627\u0645\u0627 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0646\u0634\u062f\u0647. IOException \u0647\u0645 \u062f\u0633\u062a\u0647 \u0639\u0645\u0648\u0645\u06cc\u200c\u062a\u0631\u06cc \u0627\u0632 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0648 \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0646\u0648\u0634\u062a\u0646 \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0628\u0647\u200c\u062c\u0627\u06cc \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0645\u0628\u0647\u0645\u060c \u062a\u0648\u0636\u06cc\u062d \u062f\u0642\u06cc\u0642\u200c\u062a\u0631\u06cc \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u062e\u0627\u0635 \u0642\u0628\u0644 \u0627\u0632 <\/strong><strong>IOException <\/strong><strong>\u0628\u0631\u0631\u0633\u06cc \u0634\u062f\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 when \u0627\u0628\u062a\u062f\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>is SocketTimeoutException\n\nis UnknownHostException\n\nis ConnectException<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> SocketTimeoutException<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> UnknownHostException<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> ConnectException<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u0628\u0639\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>is IOException<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> IOException<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u062e\u0637\u0627\u0647\u0627\u06cc \u0628\u0627\u0644\u0627 \u062e\u0648\u062f\u0634\u0648\u0646 \u0632\u06cc\u0631\u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 IOException \u0647\u0633\u062a\u0646. \u0627\u06af\u0631 \u0627\u0648\u0644 IOException \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645\u060c \u062a\u0645\u0627\u0645 \u062e\u0637\u0627\u0647\u0627\u06cc Timeout \u0648 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u0646 \u0633\u0631\u0648\u0631 \u0647\u0645 \u0648\u0627\u0631\u062f \u0647\u0645\u0627\u0646 \u0634\u0627\u062e\u0647 \u0639\u0645\u0648\u0645\u06cc \u0645\u06cc\u200c\u0634\u062f\u0646 \u0648 \u0634\u0627\u062e\u0647\u200c\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642\u200c\u062a\u0631 \u0647\u06cc\u0686\u200c\u0648\u0642\u062a \u0627\u062c\u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u062f\u0646. \u067e\u0633 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627\u06cc\u062f \u062e\u0637\u0627\u0647\u0627\u06cc \u062e\u0627\u0635\u200c\u062a\u0631 \u0642\u0628\u0644 \u0627\u0632 \u062e\u0637\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc\u200c\u062a\u0631 \u0628\u0631\u0631\u0633\u06cc \u0628\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>HttpException <\/strong><strong>\u0686\u06cc\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u0634\u0647\u060c \u0627\u0645\u0627 \u0633\u0631\u0648\u0631 \u06cc\u06a9 \u06a9\u062f \u0646\u0627\u0645\u0648\u0641\u0642 \u0645\u062b\u0644 401\u060c 404 \u06cc\u0627 500 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647\u060c Retrofit \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u06cc\u06a9 HttpException \u0627\u06cc\u062c\u0627\u062f \u0628\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>is HttpException -> {\n\n\u00a0\u00a0\u00a0 handleHttpError(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 code = exception.code()\n\n\u00a0\u00a0\u00a0 )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">is<\/span><span style=\"color: #24292E\"> HttpException <\/span><span style=\"color: #D73A49\">-&gt;<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">handleHttpError<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 code <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> exception.<\/span><span style=\"color: #6F42C1\">code<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062e\u0637\u0627 \u0628\u0627 \u0642\u0637\u0639 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0641\u0631\u0642 \u062f\u0627\u0631\u0647. \u062f\u0631 HttpException \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0647 \u0633\u0631\u0648\u0631 \u0631\u0633\u06cc\u062f\u0647 \u0648 \u0633\u0631\u0648\u0631 \u0647\u0645 \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0647\u060c \u0627\u0645\u0627 \u06a9\u062f \u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642 \u0646\u0628\u0648\u062f\u0647. \u0645\u062b\u0644\u0627\u064b 404 \u06cc\u0639\u0646\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0634\u0628\u06a9\u0647 \u0628\u0631\u0642\u0631\u0627\u0631 \u0628\u0648\u062f\u0647\u060c \u0648\u0644\u06cc \u0645\u0633\u06cc\u0631 API \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Retrofit <\/strong><strong>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 <\/strong><strong>HttpException <\/strong><strong>\u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u062a\u0627\u0628\u0639 API \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 \u0646\u0648\u0639 \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">UsersResponse<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Response&lt;UsersResponse&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0627\u06af\u0631 \u06a9\u062f HTTP \u0645\u0648\u0641\u0642 \u0646\u0628\u0627\u0634\u0647\u060c Retrofit \u0628\u0647\u200c\u062c\u0627\u06cc \u062a\u062d\u0648\u06cc\u0644 \u0645\u0633\u062a\u0642\u06cc\u0645 \u067e\u0627\u0633\u062e\u060c HttpException \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06a9\u062f\u0647\u0627\u06cc 401\u060c 404 \u0648 500 \u062f\u0627\u062e\u0644 NetworkErrorHandler \u0642\u0627\u0628\u0644 \u062a\u0634\u062e\u06cc\u0635 \u0647\u0633\u062a\u0646. \u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc \u062a\u0627\u0628\u0639 \u0627\u0632 \u0646\u0648\u0639 Response&lt;UsersResponse&gt; \u0628\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u062e\u0648\u062f\u0645\u0648\u0646 response.isSuccessful \u0648 response.code \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062c\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u062f\u0647\u0627\u06cc<\/strong><strong> HTTP<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Error Handler \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u062c\u062f\u0627 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private fun handleHttpError(\n\n\u00a0\u00a0\u00a0 code: Int\n\n): String<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">handleHttpError<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 code: <\/span><span style=\"color: #6F42C1\">Int<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">): <\/span><span style=\"color: #6F42C1\">String<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 \u0645\u0633\u0626\u0648\u0644 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u062f\u0647\u0627\u06cc HTTP \u0628\u0647 \u067e\u06cc\u0627\u0645 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">401 -&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;\u0646\u0634\u0633\u062a \u0634\u0645\u0627 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a\u061b \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">404 -&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;\u0645\u0633\u06cc\u0631 API \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">500 -&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> &#8220;\u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 \u0633\u0631\u0648\u0631 \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u062a\u0627\u0628\u0639 \u0627\u0635\u0644\u06cc handle \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0634\u0644\u0648\u063a \u0646\u0634\u0647 \u0648 \u06a9\u062f\u0647\u0627\u06cc HTTP \u0647\u0645\u06af\u06cc \u062f\u0631 \u06cc\u06a9 \u0642\u0633\u0645\u062a \u0645\u0634\u062e\u0635 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a <\/strong><strong>connectTimeout <\/strong><strong>\u0648 <\/strong><strong>readTimeout<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 OkHttp \u0633\u0647 \u0632\u0645\u0627\u0646 \u0645\u062a\u0641\u0627\u0648\u062a \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645. \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u062f\u0631 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0645\u0648\u0631\u062f \u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">.connectTimeout(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">.readTimeout(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">connectTimeout \u0645\u062f\u062a \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f\u0646 \u0627\u062a\u0635\u0627\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u0633\u0631\u0648\u0631 \u0635\u0628\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u0645\u0627 readTimeout \u0645\u062f\u062a \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0627\u062a\u0635\u0627\u0644\u060c \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0627\u0633\u062e \u0627\u0632 \u0633\u0631\u0648\u0631 \u0645\u0646\u062a\u0638\u0631 \u0645\u06cc\u200c\u0645\u0648\u0646\u0647. \u062f\u0631 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc sleep(8) \u0627\u062a\u0635\u0627\u0644 \u0628\u0631\u0642\u0631\u0627\u0631 \u0634\u062f\u0647\u060c \u0648\u0644\u06cc \u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e \u0631\u0648 \u062f\u06cc\u0631 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0627\u0639\u062b \u062e\u0637\u0627 \u0645\u06cc\u0634\u0647 readTimeout \u0633\u0647\u200c\u062b\u0627\u0646\u06cc\u0647\u200c\u0627\u06cc\u0647\u060c \u0646\u0647 connectTimeout.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Timeout <\/strong><strong>\u0631\u0648\u06cc \u0633\u0647 \u062b\u0627\u0646\u06cc\u0647 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b Timeout \u0631\u0648 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0634\u0631\u0627\u06cc\u0637 \u0633\u0631\u0648\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0639\u0645\u062f\u0627\u064b \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.readTimeout(\n\n\u00a0\u00a0\u00a0 3,\n\n\u00a0\u00a0\u00a0 TimeUnit.SECONDS\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">readTimeout<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">3<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 TimeUnit.SECONDS<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062f\u0631 PHP \u0647\u0634\u062a \u062b\u0627\u0646\u06cc\u0647 \u062a\u0623\u062e\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645. \u0647\u062f\u0641 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u062e\u0637\u0627\u06cc Timeout \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u06cc\u0645 \u0645\u062f\u062a \u0632\u06cc\u0627\u062f\u06cc \u0645\u0646\u062a\u0638\u0631 \u0628\u0645\u0648\u0646\u06cc\u0645 \u0648 \u062e\u0637\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u0642\u0637\u0639\u06cc \u0627\u06cc\u062c\u0627\u062f \u0628\u0634\u0647. \u067e\u0633 \u0633\u0647 \u062b\u0627\u0646\u06cc\u0647 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u0622\u0645\u0648\u0632\u0634\u06cc \u0627\u0633\u062a\u060c \u0646\u0647 \u0644\u0632\u0648\u0645\u0627\u064b \u0645\u0642\u062f\u0627\u0631 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634<\/strong><strong> Loading <\/strong><strong>\u062f\u0631<\/strong><strong> ViewModel<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc Repository \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>_state.value =\n\n\u00a0\u00a0\u00a0 AppResult.Loading\n\n\u0628\u0639\u062f \u0646\u062a\u06cc\u062c\u0647 Repository \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0627\u062e\u0644 State \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:\n\n_state.value =\n\n\u00a0\u00a0\u00a0 repository.getUsers(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 scenario = scenario\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 AppResult.Loading<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u0628\u0639\u062f \u0646\u062a\u06cc\u062c\u0647 Repository \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0627\u062e\u0644 State \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">_state.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 repository.<\/span><span style=\"color: #6F42C1\">getUsers<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 scenario <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> scenario<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0628\u0647 \u0645\u062d\u0636 \u06a9\u0644\u06cc\u06a9 \u0631\u0648\u06cc \u0647\u0631 \u062f\u06a9\u0645\u0647\u060c UI \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a Loading \u0628\u0634\u0647. \u0628\u0639\u062f \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c State \u06cc\u0627 Success \u0645\u06cc\u0634\u0647 \u06cc\u0627 Error. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Loading \u06cc\u06a9 Exception \u06cc\u0627 \u0646\u062a\u06cc\u062c\u0647 \u0634\u0628\u06a9\u0647 \u0646\u06cc\u0633\u062a\u061b \u06cc\u06a9 \u0648\u0636\u0639\u06cc\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc\u0647 \u06a9\u0647 ViewModel \u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0639\u0645\u0644\u06cc\u0627\u062a \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647<\/strong><strong> State <\/strong><strong>\u062f\u0627\u062e\u0644 \u062e\u0648\u062f <\/strong><strong>AppResult<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 StateFlow \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>MutableStateFlow&lt;\n\n\u00a0\u00a0\u00a0 AppResult&lt;List&lt;User>>\n\n><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">MutableStateFlow<\/span><span style=\"color: #D73A49\">&lt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 AppResult<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">User<\/span><span style=\"color: #D73A49\">&gt;&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0628\u0647\u200c\u062c\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 UserUiState \u062c\u062f\u0627 \u0628\u0627 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc loading\u060c users \u0648 error\u060c \u062e\u0648\u062f AppResult \u0646\u0642\u0634 UI State \u0631\u0648 \u0647\u0645 \u0628\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u06a9\u0648\u0686\u06a9 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0633\u0627\u062f\u0647 \u0648 \u0645\u0646\u0627\u0633\u0628\u0647\u060c \u0686\u0648\u0646 \u062f\u0631 \u0647\u0631 \u0644\u062d\u0638\u0647 \u0641\u0642\u0637 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0647 \u0648\u0636\u0639\u06cc\u062a Loading\u060c Success \u06cc\u0627 Error \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>when <\/strong><strong>\u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0633\u0627\u062e\u062a \u0645\u062a\u063a\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Compose \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>when (\n\n\u00a0\u00a0\u00a0 val currentState = state\n\n) {<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">when<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> currentState <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> state<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0645\u0642\u062f\u0627\u0631 \u0641\u0639\u0644\u06cc state \u0631\u0648 \u062f\u0627\u062e\u0644 currentState \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u0646\u0648\u0639\u0634 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0628\u0639\u062f \u062f\u0631 \u0634\u0627\u062e\u0647 \u0645\u0648\u0641\u0642 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645 currentState.data \u0648 \u062f\u0631 \u0634\u0627\u062e\u0647 \u062e\u0637\u0627 currentState.message \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0645\u0634\u062e\u0635 \u0627\u0632 State \u0631\u0648 \u062f\u0631 \u062a\u0645\u0627\u0645 \u0647\u0645\u0627\u0646 when \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u06a9\u062f \u0647\u0645 \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> UI <\/strong><strong>\u0641\u0642\u0637 \u067e\u06cc\u0627\u0645<\/strong><strong> Error Handler <\/strong><strong>\u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Composable \u0627\u0632 \u0646\u0648\u0639 \u0648\u0627\u0642\u0639\u06cc Exception \u0627\u0637\u0644\u0627\u0639\u06cc \u0646\u062f\u0627\u0631\u0647. UI \u0641\u0642\u0637 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">currentState.message<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc UI \u0646\u0645\u06cc\u200c\u062f\u0648\u0646\u0647 \u062e\u0637\u0627 IOException \u0628\u0648\u062f\u0647 \u06cc\u0627 HttpException. \u062a\u0634\u062e\u06cc\u0635 \u0641\u0646\u06cc \u062e\u0637\u0627 \u062f\u0627\u062e\u0644 \u0644\u0627\u06cc\u0647 Network \u0648 Repository \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0648 UI \u0641\u0642\u0637 \u067e\u06cc\u0627\u0645 \u0622\u0645\u0627\u062f\u0647 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0645\u0647\u0645\u0647\u060c \u0686\u0648\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0628\u0627\u06cc\u062f \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0641\u0646\u06cc \u0634\u0628\u06a9\u0647 \u062f\u0631\u06af\u06cc\u0631 \u0628\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Exception \u0641\u0646\u06cc<br>\u2193<br>NetworkErrorHandler<br>\u2193<br>\u067e\u06cc\u0627\u0645 \u0642\u0627\u0628\u0644\u200c\u0641\u0647\u0645<br>\u2193<br>AppResult.Error<br>\u2193<br>Compose<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f4<br>\u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0628\u0627 SQLite \/ Room \u0645\u0642\u062f\u0645\u0627\u062a\u06cc<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0645\u06cc\u0634\u0647 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u06cc\u200c\u0622\u0645\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Android<br>\u2193<br>Retrofit<br>\u2193<br>PHP API<br>\u2193<br>JSON<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0645\u0647\u0645 \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0686\u0647\u061f \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a<\/li>\n\n\n\n<li>\u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646<\/li>\n\n\n\n<li>\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0627\u0646\u06a9\u06cc<\/li>\n\n\n\n<li>\u0628\u0631\u0646\u0627\u0645\u0647 \u0642\u06cc\u0645\u062a\u200c\u0647\u0627<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u0628\u0639\u0636\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u06af\u0648\u0634\u06cc \u0646\u06af\u0647 \u062f\u0627\u0631\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 Database \u0645\u062d\u0644\u06cc \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Database \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Database \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a. \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062f\u0627\u062e\u0644 \u0645\u062a\u063a\u06cc\u0631 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val notes = listOf()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> notes <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0647 \u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u062f\u060c \u0622\u0646 \u0631\u0627 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Phone Storage<br>\u2193<br>Database<br>\u2193<br>Notes<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">SQLite \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SQLite \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06a9\u0648\u0686\u06a9 \u0648 \u062f\u0627\u062e\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u06cc\u0639\u0646\u06cc \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0646\u0635\u0628 \u0633\u0631\u0648\u0631 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0646\u062f\u0627\u0631\u062f. \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Android Device\n\n \u2514\u2500\u2500 SQLite Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u06cc\u0644\u06cc \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0641\u0644\u0627\u06cc\u0646 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 \u06a9\u0627\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0627 SQLite<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0627 SQLite \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE Notes\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u06a9\u0627\u0631 \u0628\u0627 \u0622\u0646 \u0633\u062e\u062a \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Query\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f<\/li>\n\n\n\n<li>\u062a\u0628\u062f\u06cc\u0644 Cursor<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627<\/li>\n\n\n\n<li>\u06a9\u062f\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u06af\u0648\u06af\u0644 \u06cc\u06a9 \u0644\u0627\u06cc\u0647 \u0628\u0627\u0644\u0627\u062a\u0631 \u0633\u0627\u062e\u062a\u0647 \u0628\u0647 \u0646\u0627\u0645 <strong>Room.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Room \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0648\u06cc SQLite \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>SQLite<br>\u2193<br>Storage \u06af\u0648\u0634\u06cc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0628\u0627 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc Kotlin \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 Room \u062e\u0648\u062f\u0634 SQL \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Room<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>build.gradle\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\"androidx.room:room-runtime:2.6.1\"\n)\n\n\nkapt(\n\"androidx.room:room-compiler:2.6.1\"\n)\n\n\nimplementation(\n\"androidx.room:room-ktx:2.6.1\"\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;androidx.room:room-runtime:2.6.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">kapt<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;androidx.room:room-compiler:2.6.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;androidx.room:room-ktx:2.6.1&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u0631\u0648\u0698\u0647 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u06a9\u0627\u0631\u0628\u0631 \u0628\u062a\u0648\u0627\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f<\/li>\n\n\n\n<li>\u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0628\u06cc\u0646\u062f<\/li>\n\n\n\n<li>\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u062f<\/li>\n\n\n\n<li>\u062d\u0630\u0641 \u06a9\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Note App<br><br>User<br>\u2193<br>Add Note<br>\u2193<br>Save Database<br>\u2193<br>Show Notes<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Entity \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Entity \u06cc\u0639\u0646\u06cc \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062f\u0627\u062e\u0644 Database. \u0645\u062b\u0644\u0627\u064b \u062c\u062f\u0648\u0644 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Notes Table\n\n\nid | title | text\n\n1  | \u062e\u0631\u06cc\u062f | \u0634\u06cc\u0631 \u0628\u062e\u0631\n\n2  | \u06a9\u0627\u0631  | \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Room \u0647\u0631 Entity \u06cc\u06a9 Data Class \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Note Entity<\/h1>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Entity(\n    tableName = \"notes\"\n)\ndata class Note(\n\n    @PrimaryKey(\n        autoGenerate = true\n    )\n    val id:Int = 0,\n\n\n    val title:String,\n\n\n    val description:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Entity<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    tableName <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;notes&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Note<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">@PrimaryKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        autoGenerate <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">0<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> title:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> description:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u06a9\u062f<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">@Entity \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u062c\u062f\u0648\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">@PrimaryKey \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646 \u0634\u0646\u0627\u0633\u0647 \u0627\u0635\u0644\u06cc \u062c\u062f\u0648\u0644 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<pre class=\"wp-block-code\"><code>autoGenerate = true\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062e\u0648\u062f \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0634\u0645\u0627\u0631\u0647 \u0628\u0633\u0627\u0632\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Note 1\n\nNote 2\n\nNote 3\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">DAO \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DAO \u0645\u062e\u0641\u0641 Data Access Object \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Insert<\/li>\n\n\n\n<li>Update<\/li>\n\n\n\n<li>Delete<\/li>\n\n\n\n<li>Query<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a NoteDao<\/h1>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Dao\ninterface NoteDao{\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Dao<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteDao<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Insert \u06a9\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Insert\nsuspend fun insertNote(\n    note:Note\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Insert<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">insertNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Note(\n\ntitle=\"Shopping\",\n\ndescription=\"Buy Milk\"\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Note<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">title<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #032F62\">&quot;Shopping&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">description<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #032F62\">&quot;Buy Milk&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0631\u0641\u062a\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Query(\n\"SELECT * FROM notes\"\n)\nfun getNotes():\n\nFlow&lt;List&lt;Note>>\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Query<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;SELECT * FROM notes&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Flow<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">Note<\/span><span style=\"color: #D73A49\">&gt;&gt;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062a\u0645\u0627\u0645 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n Note1,\n\n Note2,\n\n Note3\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> Note1,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> Note2,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> Note3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062d\u0630\u0641 \u06a9\u0631\u062f\u0646<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Delete\nsuspend fun deleteNote(\n    note:Note\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Delete<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">deleteNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0622\u067e\u062f\u06cc\u062a \u06a9\u0631\u062f\u0646<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Update\nsuspend fun updateNote(\n    note:Note\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Update<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">updateNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Database<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u062e\u0648\u062f Database \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Database(\n\nentities =\n&#91;\n    Note::class\n&#93;,\n\nversion = 1\n\n)\n\nabstract class AppDatabase:\n\nRoomDatabase(){\n\n\nabstract fun noteDao():\n\nNoteDao\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Database<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">entities <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Note::<\/span><span style=\"color: #6F42C1\">class<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">version <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">abstract<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">AppDatabase<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">RoomDatabase<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">abstract<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">noteDao<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">NoteDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644 \u0645\u0639\u0645\u0627\u0631\u06cc MVVM \u0642\u0628\u0644\u06cc\u060c \u0645\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 UI \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0635\u062f\u0627 \u0646\u0645\u06cc\u200c\u0632\u0646\u06cc\u0645. \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose<br>\u2193<br>ViewModel<br>\u2193<br>Repository<br>\u2193<br>Room Database<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Repository<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NoteRepository(\n\nprivate val dao:\nNoteDao\n\n){\n\n\nfun getNotes():\n\nFlow&lt;List&lt;Note>>{\n\n\nreturn dao.getNotes()\n\n\n}\n\n\n\nsuspend fun insert(\nnote:Note\n){\n\ndao.insertNote(note)\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">NoteDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Flow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Note<\/span><span style=\"color: #24292E\">&gt;&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> dao.<\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">insert<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">insertNote<\/span><span style=\"color: #24292E\">(note)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">ViewModel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 ViewModel:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NoteViewModel(\n\nprivate val repository:\nNoteRepository\n\n):ViewModel(){\n\n\nval notes =\nrepository.getNotes()\n\n\nfun addNote(\nnote:Note\n){\n\nviewModelScope.launch {\n\n\nrepository.insert(note)\n\n\n}\n\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">NoteRepository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> notes <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">repository.<\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">addNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">viewModelScope.<\/span><span style=\"color: #6F42C1\">launch<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">repository.<\/span><span style=\"color: #6F42C1\">insert<\/span><span style=\"color: #24292E\">(note)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u062a\u0635\u0627\u0644 Compose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 UI:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val notes by viewModel.notes\n.collectAsState(\ninitial = emptyList()\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> notes <\/span><span style=\"color: #D73A49\">by<\/span><span style=\"color: #24292E\"> viewModel.notes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">collectAsState<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">initial <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">emptyList<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u062a\u0641\u0627\u0642 \u0628\u06cc\u0641\u062a\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>Flow<br>\u2193<br>ViewModel<br>\u2193<br>Compose Update<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u06a9 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f.<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><strong>\u0639\u0646\u0648\u0627\u0646<\/strong><br>\u062e\u0631\u06cc\u062f<br><strong>\u0645\u062a\u0646<\/strong><br>\u0634\u06cc\u0631 \u0648 \u0646\u0627\u0646 \u0628\u062e\u0631<br><strong>\u06a9\u0644\u06cc\u06a9<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Save Button<br>\u2193<br>ViewModel<br>\u2193<br>Repository<br>\u2193<br>Room<br>\u2193<br>SQLite<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u062d\u062a\u06cc \u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0633\u062a\u0647 \u0634\u0648\u062f \u06cc\u0627 \u06af\u0648\u0634\u06cc Restart \u0634\u0648\u062f\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u062a\u0641\u0627\u0648\u062a Database \u0622\u0646\u0644\u0627\u06cc\u0646 \u0648 \u0622\u0641\u0644\u0627\u06cc\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0622\u0646\u0644\u0627\u06cc\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Server<br>\u2193<br>API<br>\u2193<br>App<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0622\u0641\u0644\u0627\u06cc\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Phone<br>\u2193<br>Room<br>\u2193<br>App<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0647\u0631 \u062f\u0648 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Open App<br>\u2193<br>Room<br>\u2193<br>Show Old Data<br>\u2193<br>API<br>\u2193<br>Update Data<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0631 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u0635\u0644\u06cc \u0645\u0627\u060c \u0645\u062b\u0644\u0627\u064b \u0642\u06cc\u0645\u062a\u200c\u0647\u0627\u060c \u0633\u0631\u0648\u0631:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">API<br>\u2193<br>Latest Prices<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0644\u06cc \u06af\u0648\u0634\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>Last Saved Prices<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0634\u062f \u06a9\u0627\u0631\u0628\u0631 \u0647\u0646\u0648\u0632 \u0622\u062e\u0631\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 Room<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>data\n\n \u251c\u2500\u2500 database\n\n \u2502    \u251c\u2500\u2500 Note.kt\n\n \u2502    \u251c\u2500\u2500 NoteDao.kt\n\n \u2502    \u2514\u2500\u2500 AppDatabase.kt\n\n\n \u2514\u2500\u2500 repository\n\n      \u2514\u2500\u2500 NoteRepository.kt\n\n\n\npresentation\n\n \u2514\u2500\u2500 notes\n\n      \u251c\u2500\u2500 NoteScreen.kt\n\n      \u2514\u2500\u2500 NoteViewModel.kt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0647\u0645 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0647\u0645 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 MySQL \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u060c \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a\u0647\u061b \u0627\u0645\u0627 Room \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0645\u062d\u0644\u06cc \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f \u0631\u0648 \u0627\u0632 PHP \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0647\u0645 \u0647\u0645\u06cc\u0634\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0627\u0632 Room \u0645\u06cc\u200c\u062e\u0648\u0646\u0647\u060c \u0646\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 Retrofit. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u06af\u0631 \u062f\u0641\u0639\u0647 \u0628\u0639\u062f \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0628\u0627\u0634\u0647\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u0646\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">PHP \u0648 MySQL<br>\u2193<br>Retrofit<br>\u2193<br>\u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 Room<br>\u2193<br>\u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0632 Room<br>\u2193<br>Compose<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062f\u0631<\/strong><strong> MySQL <\/strong><strong>\u062f\u0648 \u062c\u062f\u0648\u0644 <\/strong><strong>users <\/strong><strong>\u0648 <\/strong><strong>articles <\/strong><strong>\u0633\u0627\u062e\u062a\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u06cc\u06a9 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u062a\u0639\u0644\u0642 \u062f\u0627\u0631\u0647. \u0627\u06af\u0631 \u0646\u0627\u0645 \u0648 \u0627\u06cc\u0645\u06cc\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 \u062a\u06a9\u200c\u062a\u06a9 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0636\u0627\u0641\u06cc \u0648 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u062f. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644 users \u0648 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644 articles \u06af\u0630\u0627\u0634\u062a\u06cc\u0645. \u062c\u062f\u0648\u0644 \u0645\u0642\u0627\u0644\u0627\u062a \u0641\u0642\u0637 \u0634\u0646\u0627\u0633\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0631\u0648 \u062f\u0631 \u0633\u062a\u0648\u0646 user_id \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0647\u0645\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0628\u0647 \u062c\u062f\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648\u0635\u0644 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Foreign Key <\/strong><strong>\u062f\u0631 \u062c\u062f\u0648\u0644 \u0645\u0642\u0627\u0644\u0627\u062a<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644 articles \u0627\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0648 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">FOREIGN KEY (user_id)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">REFERENCES users(id)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0645\u0642\u062f\u0627\u0631 user_id \u0647\u0631 \u0645\u0642\u0627\u0644\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0642\u0639\u06cc \u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644 users \u0627\u0634\u0627\u0631\u0647 \u0628\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0645\u0642\u0627\u0644\u0647\u200c\u0627\u06cc user_id = 2 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u06f2 \u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062c\u0644\u0648\u06cc \u062b\u0628\u062a \u0645\u0642\u0627\u0644\u0647\u200c\u0627\u06cc \u0628\u0627 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0639\u0646\u06cc <\/strong><strong>ON DELETE CASCADE<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc Foreign Key \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ON DELETE CASCADE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u062c\u062f\u0648\u0644 users \u062d\u0630\u0641 \u0628\u0634\u0647\u060c \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u0627\u0648\u0646 \u0647\u0645 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062d\u0630\u0641 \u0645\u06cc\u200c\u0634\u0646. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0627\u0646\u0639 \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f\u0646 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u06cc\u0634\u0647 \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u200c\u0634\u0648\u0646 \u062f\u06cc\u06af\u0647 \u062f\u0627\u062e\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647. \u0627\u0644\u0628\u062a\u0647 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u0686\u0646\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631\u06cc \u0645\u0637\u0645\u0626\u0646 \u0628\u0634\u06cc\u0645 \u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0645\u06cc\u200c\u062e\u0648\u0627\u06cc\u0645 \u0628\u0627 \u062d\u0630\u0641 \u06a9\u0627\u0631\u0628\u0631\u060c \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u0634 \u0647\u0645 \u067e\u0627\u06a9 \u0628\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>ON DUPLICATE KEY UPDATE<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0645\u0648\u0646\u0647 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ON DUPLICATE KEY UPDATE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0641\u0627\u06cc\u0644 SQL \u0631\u0648 \u0628\u0634\u0647 \u0686\u0646\u062f \u0628\u0627\u0631 Import \u06a9\u0631\u062f. \u0627\u06af\u0631 \u0631\u06a9\u0648\u0631\u062f\u06cc \u0628\u0627 \u0647\u0645\u0648\u0646 \u0634\u0646\u0627\u0633\u0647 \u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0642\u0628\u0644\u0627\u064b \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c MySQL \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062e\u0637\u0627\u06cc Duplicate\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc \u0631\u0648 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a\u060c \u0627\u062c\u0631\u0627\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0645\u0645\u06a9\u0646 \u0628\u0648\u062f \u0628\u0647 \u062e\u0627\u0637\u0631 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0628\u0648\u062f\u0646 \u0634\u0646\u0627\u0633\u0647\u200c\u0647\u0627 \u0645\u062a\u0648\u0642\u0641 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0627\u0632 <\/strong><strong>utf8mb4 <\/strong><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062c\u062f\u0648\u0644 \u0648 \u0627\u062a\u0635\u0627\u0644 PHP \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">utf8mb4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Character Set \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0631\u0633\u062a \u0645\u062a\u0646 \u0641\u0627\u0631\u0633\u06cc\u060c \u062d\u0631\u0648\u0641 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0648 \u062d\u062a\u06cc Emoji \u0645\u0646\u0627\u0633\u0628\u0647. \u0627\u06af\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0627\u062a\u0635\u0627\u0644 PHP \u062f\u0631\u0633\u062a \u0646\u0628\u0627\u0634\u0647\u060c \u0645\u0645\u06a9\u0646\u0647 \u0645\u062a\u0646\u200c\u0647\u0627\u06cc \u0641\u0627\u0631\u0633\u06cc \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0639\u0644\u0627\u0645\u062a \u0633\u0624\u0627\u0644 \u06cc\u0627 \u0646\u0648\u06cc\u0633\u0647\u200c\u0647\u0627\u06cc \u062e\u0631\u0627\u0628 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0628\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a \u0627\u062a\u0635\u0627\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0627<\/strong><strong> PDO<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 PHP \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 MySQL \u0631\u0648 \u0628\u0627 PDO \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">$pdo = new PDO(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PDO \u06cc\u06a9 \u0631\u0648\u0634 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0631 PHP \u0627\u0633\u062a. \u0645\u0632\u06cc\u062a\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u060c \u0627\u062c\u0631\u0627\u06cc Query \u0648 \u0628\u0639\u062f\u0627\u064b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Prepared Statement \u0631\u0648 \u0645\u0631\u062a\u0628\u200c\u062a\u0631 \u0648 \u0627\u0645\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0641\u0627\u06cc\u0644 room_config.php \u0641\u0642\u0637 \u0645\u0633\u0626\u0648\u0644 \u0633\u0627\u062e\u062a \u0647\u0645\u06cc\u0646 \u0627\u062a\u0635\u0627\u0644 \u0627\u0633\u062a \u062a\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062a\u0635\u0627\u0644 \u062f\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u06a9\u0631\u0627\u0631 \u0646\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0646\u0638\u06cc\u0645 <\/strong><strong>PDO::ERRMODE_EXCEPTION<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a PDO \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>PDO::ATTR_ERRMODE =>\n\n\u00a0\u00a0\u00a0 PDO::ERRMODE_EXCEPTION<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">PDO::<\/span><span style=\"color: #6F42C1\">ATTR_ERRMODE<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 PDO::<\/span><span style=\"color: #6F42C1\">ERRMODE_EXCEPTION<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u0627\u062a\u0635\u0627\u0644 \u06cc\u0627 Query \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0634\u062a\u060c PDO \u06cc\u06a9 Exception \u0627\u06cc\u062c\u0627\u062f \u0628\u06a9\u0646\u0647. \u0628\u0639\u062f \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u062e\u0637\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 catch \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647\u200c\u062c\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627\u06cc \u062e\u0627\u0645 PHP \u06cc\u0627 \u062e\u0631\u0627\u0628 \u0634\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc JSON\u060c \u06cc\u06a9 \u067e\u0627\u0633\u062e \u06a9\u0646\u062a\u0631\u0644\u200c\u0634\u062f\u0647 \u0628\u0627 \u06a9\u062f 500 \u0628\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0646\u0638\u06cc\u0645 <\/strong><strong>PDO::FETCH_ASSOC<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>PDO::ATTR_DEFAULT_FETCH_MODE =>\n\n\u00a0\u00a0\u00a0 PDO::FETCH_ASSOC<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">PDO::<\/span><span style=\"color: #6F42C1\">ATTR_DEFAULT_FETCH_MODE<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 PDO::<\/span><span style=\"color: #6F42C1\">FETCH_ASSOC<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u062a\u06cc\u062c\u0647 Query \u0628\u0647 \u0634\u06a9\u0644 \u0622\u0631\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0646\u0627\u0645 \u0633\u062a\u0648\u0646\u200c\u0647\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0647. \u0645\u062b\u0644\u0627\u064b \u0628\u0647\u200c\u062c\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0634\u0645\u0627\u0631\u0647 \u0633\u062a\u0648\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">$article[&#8220;title&#8221;]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u067e\u0627\u0633\u062e JSON \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0648 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0628\u062f\u06cc\u0644 <\/strong><strong>updated_at <\/strong><strong>\u0628\u0647<\/strong><strong> Unix Timestamp<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Query \u0645\u0642\u0627\u0644\u0627\u062a \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">UNIX_TIMESTAMP(updated_at) AS updated_at<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u062a\u0648\u0646 updated_at \u062f\u0627\u062e\u0644 MySQL \u0627\u0632 \u0646\u0648\u0639 \u062a\u0627\u0631\u06cc\u062e \u0648 \u0632\u0645\u0627\u0646\u0647\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9 \u0639\u062f\u062f Long \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u0647. \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u062a\u0627\u0631\u06cc\u062e MySQL \u0631\u0648 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u062b\u0627\u0646\u06cc\u0647\u200c\u0647\u0627\u06cc \u06af\u0630\u0634\u062a\u0647 \u0627\u0632 Unix Epoch \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0639\u062f \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0647\u0645\u06cc\u0646 \u0639\u062f\u062f \u0631\u0648 \u062f\u0627\u062e\u0644 updatedAt \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0631\u0627\u06cc \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u06cc\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0632\u0645\u0627\u0646 \u0627\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0639\u062f\u062f\u0647\u0627\u06cc<\/strong><strong> PHP <\/strong><strong>\u0631\u0627 \u0628\u0647 <\/strong><strong>int <\/strong><strong>\u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u0632 PDO \u0645\u0645\u06a9\u0646\u0647 \u062d\u062a\u06cc \u0628\u0631\u0627\u06cc \u0633\u062a\u0648\u0646\u200c\u0647\u0627\u06cc \u0639\u062f\u062f\u06cc \u0628\u0647 \u0634\u06a9\u0644 String \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u0634\u0646. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$article&#91;\"id\"&#93; =\n\n\u00a0\u00a0\u00a0 (int) $article&#91;\"id\"&#93;;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">$article&#91;<\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">&#93; <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 (int) $article&#91;<\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">&#93;;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 JSON \u0648\u0627\u0642\u0639\u0627\u064b \u0639\u062f\u062f \u0628\u0641\u0631\u0633\u062a\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;id&#8221;: 1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647 \u0645\u062a\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;id&#8221;: &#8220;1&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 Gson \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0642\u062f\u0627\u0631 \u0631\u0648 \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u062f\u0627\u062e\u0644 \u0648\u06cc\u0698\u06af\u06cc Int \u0645\u062f\u0644 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a \u0645\u062f\u0644<\/strong><strong> API <\/strong><strong>\u0648<\/strong><strong> Entity<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0645 ApiArticle \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0647\u0645 ArticleEntity. \u0627\u06cc\u0646 \u062f\u0648 \u0647\u062f\u0641 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0631\u0646. ApiArticle \u062f\u0642\u06cc\u0642\u0627\u064b \u0633\u0627\u062e\u062a\u0627\u0631 JSON \u0633\u0631\u0648\u0631 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u060c \u0627\u0645\u0627 ArticleEntity \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u0648\u0644 \u062f\u0627\u062e\u0644 Room \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ApiArticle = \u062f\u0627\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a\u200c\u0634\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ArticleEntity = \u062f\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0627\u062e\u0644 SQLite \u06af\u0648\u0634\u06cc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0631\u0648\u0631 \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062d\u0644\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0647 \u0647\u0645 \u0642\u0641\u0644 \u0646\u0634\u0646. \u0645\u062b\u0644\u0627\u064b \u0648\u06cc\u0698\u06af\u06cc isLocal \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 Room \u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0627\u0631\u0647 \u0648 \u0627\u0635\u0644\u0627\u064b \u0627\u0632 PHP \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>@SerializedName<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0627\u0645 \u0628\u0639\u0636\u06cc \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc JSON \u0628\u0647 \u0634\u06a9\u0644 Snake Case \u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;user_id&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;updated_at&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b Camel Case \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">userId<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">updatedAt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0648\u0635\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0646\u0627\u0645 \u0627\u0632 @SerializedName \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@SerializedName(\"user_id\")\n\nval userId: Int<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@SerializedName<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;user_id&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> userId: <\/span><span style=\"color: #6F42C1\">Int<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Annotation \u0628\u0647 Gson \u0645\u06cc\u06af\u0647 \u0645\u0642\u062f\u0627\u0631 user_id \u062f\u0627\u062e\u0644 JSON \u0631\u0648 \u062f\u0627\u062e\u0644 \u0648\u06cc\u0698\u06af\u06cc userId \u0642\u0631\u0627\u0631 \u0628\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>@Entity <\/strong><strong>\u0686\u06cc\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0631\u0648\u06cc \u06cc\u06a9 Data Class \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Entity(\n\n\u00a0\u00a0\u00a0 tableName = \"articles\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Entity<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 tableName <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;articles&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 Room \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0628\u0627\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u062c\u062f\u0648\u0644 SQLite \u062a\u0628\u062f\u06cc\u0644 \u0628\u0634\u0647. \u0647\u0631 \u0648\u06cc\u0698\u06af\u06cc \u06a9\u0644\u0627\u0633 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9 \u0633\u062a\u0648\u0646 \u062c\u062f\u0648\u0644 \u0645\u06cc\u0634\u0647 \u0648 \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0647\u0645 \u06cc\u06a9 \u0631\u062f\u06cc\u0641 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0646\u0627\u0645 \u062c\u062f\u0648\u0644 \u0631\u0627 \u0628\u0627 <\/strong><strong>tableName <\/strong><strong>\u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 tableName \u0631\u0648 \u062a\u0639\u06cc\u06cc\u0646 \u0646\u06a9\u0646\u06cc\u0645\u060c Room \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 \u0646\u0627\u0645 \u062e\u0648\u062f \u06a9\u0644\u0627\u0633 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645 \u062c\u062f\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u0627 \u0639\u0645\u062f\u0627\u064b \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0633\u0627\u062f\u0647 users \u0648 articles \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 Query\u0647\u0627\u06cc SQL \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0628\u0627\u0634\u0646 \u0648 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062d\u0644\u06cc \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0631\u0648\u0631 \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>@PrimaryKey <\/strong><strong>\u0648 <\/strong><strong>autoGenerate<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@PrimaryKey(\n\n\u00a0\u00a0\u00a0 autoGenerate = true\n\n)\n\nval id: Int = 0<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@PrimaryKey<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 autoGenerate <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">true<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id: <\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Primary Key \u0634\u0646\u0627\u0633\u0647 \u06cc\u06a9\u062a\u0627\u06cc \u0647\u0631 \u0631\u062f\u06cc\u0641\u0647. autoGenerate = true \u06cc\u0639\u0646\u06cc \u0648\u0642\u062a\u06cc \u0645\u0642\u0627\u0644\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627 id = 0 \u0648\u0627\u0631\u062f Room \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u062e\u0648\u062f SQLite \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u0634 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0628\u0631\u0627\u06cc \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u062e\u0648\u062f\u0645\u0648\u0646 \u062f\u0646\u0628\u0627\u0644 \u0622\u062e\u0631\u06cc\u0646 \u0634\u0645\u0627\u0631\u0647 \u0628\u06af\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u060c \u0634\u0646\u0627\u0633\u0647 \u0648\u0627\u0642\u0639\u06cc \u0633\u0631\u0648\u0631 \u0631\u0648 \u062f\u0627\u062e\u0644 id \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 Room \u0647\u0645\u0648\u0646 \u0634\u0646\u0627\u0633\u0647 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>@ColumnInfo<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0627\u0647\u06cc \u0646\u0627\u0645 \u0648\u06cc\u0698\u06af\u06cc \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0628\u0627 \u0646\u0627\u0645 \u0633\u062a\u0648\u0646 SQLite \u0641\u0631\u0642 \u062f\u0627\u0631\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@ColumnInfo(\n\n\u00a0\u00a0\u00a0 name = \"user_id\"\n\n)\n\nval userId: Int<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@ColumnInfo<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;user_id&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> userId: <\/span><span style=\"color: #6F42C1\">Int<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0628\u0627 \u0646\u0627\u0645 \u062e\u0648\u0627\u0646\u0627\u062a\u0631 userId \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 \u0633\u062a\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 user_id \u0646\u0627\u0645 \u062f\u0627\u0631\u0647. @ColumnInfo \u0627\u06cc\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0631\u0648 \u0628\u0631\u0627\u06cc Room \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> Index <\/strong><strong>\u0628\u0631\u0627\u06cc <\/strong><strong>user_id<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Entity \u0645\u0642\u0627\u0644\u0647 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>indices = [\n\n\u00a0\u00a0\u00a0 Index(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 value = &#91;\"user_id\"&#93;\n\n\u00a0\u00a0\u00a0 )\n\n]<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">indices <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> [<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Index<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> &#91;<\/span><span style=\"color: #032F62\">&quot;user_id&quot;<\/span><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">]<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u062f\u0631 Query\u0647\u0627 \u0645\u0631\u062a\u0628 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 user_id \u0648\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. Index \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 SQLite \u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06cc\u06a9 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u0647 \u0647\u0631 \u0628\u0627\u0631 \u062a\u0645\u0627\u0645 \u062c\u062f\u0648\u0644 \u0631\u0648 \u0631\u062f\u06cc\u0641\u200c\u0628\u0647\u200c\u0631\u062f\u06cc\u0641 \u062c\u0633\u062a\u200c\u0648\u062c\u0648 \u0628\u06a9\u0646\u0647. \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06a9\u0648\u0686\u06a9 \u062a\u0641\u0627\u0648\u062a \u0632\u06cc\u0627\u062f\u06cc \u062f\u06cc\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647\u060c \u0627\u0645\u0627 \u0628\u0627 \u0632\u06cc\u0627\u062f \u0634\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0633\u0631\u0639\u062a Query \u0631\u0648 \u0628\u0647\u062a\u0631 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u06cc\u0698\u06af\u06cc <\/strong><strong>isLocal<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 \u06a9\u062c\u0627 \u0627\u0648\u0645\u062f\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val isLocal: Boolean = false<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">isLocal = false<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0633\u0627\u062e\u062a\u0647 \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">isLocal = true<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u0627\u06cc \u062f\u0648 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645: \u0627\u0648\u0644 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646\u0628\u0639 \u0645\u0642\u0627\u0644\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 UI \u0646\u0645\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645\u060c \u062f\u0648\u0645 \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0642\u0637 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0642\u0627\u0628\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062d\u0630\u0641 \u0628\u0627\u0634\u0646. \u0686\u0648\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u062d\u0644\u06cc \u0631\u0648 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u0646\u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0646\u0628\u0627\u06cc\u062f \u0648\u0627\u0646\u0645\u0648\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0645\u0642\u0627\u0644\u0647 \u0633\u0631\u0648\u0631 \u0648\u0627\u0642\u0639\u0627\u064b \u0631\u0648\u06cc MySQL \u0627\u062b\u0631 \u06af\u0630\u0627\u0634\u062a\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 <\/strong><strong>ArticleWithAuthor<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u062f\u0648\u0644 articles \u0641\u0642\u0637 userId \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 UI \u0628\u0647 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u0645 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0647. \u0628\u0631\u0627\u06cc \u0646\u062a\u06cc\u062c\u0647 Query \u06cc\u06a9 \u0645\u062f\u0644 \u062c\u062f\u0627 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">data class ArticleWithAuthor(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 Entity \u0646\u06cc\u0633\u062a \u0648 \u062c\u062f\u0648\u0644 \u062c\u062f\u06cc\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647. \u0641\u0642\u0637 \u0634\u06a9\u0644 \u0646\u062a\u06cc\u062c\u0647 Query \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u06cc\u0639\u0646\u06cc \u0645\u0642\u0627\u0644\u0647 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0632 \u062c\u062f\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>DAO <\/strong><strong>\u0686\u06cc\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">DAO \u062c\u0627\u06cc\u06cc\u0647 \u06a9\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u062c\u0627\u0632 \u0631\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">@Dao<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">interface ContentDao<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UI \u0648 ViewModel \u0646\u0628\u0627\u06cc\u062f Query SQL \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646. \u062a\u0645\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u062e\u0648\u0627\u0646\u062f\u0646\u060c \u0627\u0641\u0632\u0648\u062f\u0646\u060c \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062d\u0630\u0641 \u062f\u0627\u062e\u0644 DAO \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646 \u0648 Room \u0628\u0631\u0627\u0633\u0627\u0633 \u0647\u0645\u06cc\u0646 Interface \u06a9\u062f \u0627\u062c\u0631\u0627\u06cc\u06cc \u0644\u0627\u0632\u0645 \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Query <\/strong><strong>\u062a\u0631\u06a9\u06cc\u0628\u06cc \u0628\u0627 <\/strong><strong>LEFT JOIN<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0642\u0627\u0644\u0647 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>FROM articles\n\nLEFT JOIN users\n\n\u00a0\u00a0\u00a0 ON users.id = articles.user_id<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">FROM articles<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">LEFT JOIN users<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ON users.id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> articles.user_id<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">LEFT JOIN \u06cc\u0639\u0646\u06cc \u062a\u0645\u0627\u0645 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0631\u0648 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u060c \u062d\u062a\u06cc \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0645\u062a\u0646\u0627\u0638\u0631\u06cc \u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f. \u0627\u06af\u0631 \u0627\u0632 INNER JOIN \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u0645\u060c \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0645\u0627 \u06a9\u0647 userId = 0 \u062f\u0627\u0631\u0646 \u0648 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0635\u0641\u0631 \u0646\u062f\u0627\u0631\u0646\u060c \u0627\u0635\u0644\u0627\u064b \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u0634\u062f\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>CASE <\/strong><strong>\u0648 <\/strong><strong>COALESCE <\/strong><strong>\u062f\u0631<\/strong><strong> Query<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CASE\n\n\u00a0\u00a0\u00a0 WHEN articles.is_local = 1\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 THEN '\u0645\u0642\u0627\u0644\u0647 \u0645\u062d\u0644\u06cc'\n\n\u00a0\u00a0\u00a0 ELSE COALESCE(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 users.name,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 '\u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0646\u0627\u0645\u0634\u062e\u0635'\n\n\u00a0\u00a0\u00a0 )\n\nEND AS authorName<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">CASE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 WHEN articles.is_local <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 THEN <\/span><span style=\"color: #032F62\">&#39;\u0645\u0642\u0627\u0644\u0647 \u0645\u062d\u0644\u06cc&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ELSE <\/span><span style=\"color: #6F42C1\">COALESCE<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 users.name,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&#39;\u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0646\u0627\u0645\u0634\u062e\u0635&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">END AS authorName<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0642\u0627\u0644\u0647 \u0645\u062d\u0644\u06cc \u0628\u0627\u0634\u0647\u060c \u0645\u0633\u062a\u0642\u06cc\u0645 \u0639\u0646\u0648\u0627\u0646 \u00ab\u0645\u0642\u0627\u0644\u0647 \u0645\u062d\u0644\u06cc\u00bb \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0645\u0642\u0627\u0644\u0647 \u0633\u0631\u0648\u0631\u06cc \u0628\u0627\u0634\u0647\u060c \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0627\u0632 \u062c\u062f\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u0634\u0647. COALESCE \u0647\u0645 \u0645\u06cc\u06af\u0647 \u0627\u06af\u0631 \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 null \u0628\u0648\u062f\u060c \u0639\u0628\u0627\u0631\u062a \u00ab\u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0646\u0627\u0645\u0634\u062e\u0635\u00bb \u0631\u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0627 \u0646\u0627\u0645 authorName \u062f\u0627\u062e\u0644 \u0645\u062f\u0644 ArticleWithAuthor \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0647\u0645\u06cc\u062a \u0646\u0627\u0645\u200c\u0647\u0627\u06cc <\/strong><strong>AS <\/strong><strong>\u062f\u0631<\/strong><strong> Query<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Query \u0628\u0631\u0627\u06cc \u0633\u062a\u0648\u0646\u200c\u0647\u0627 Alias \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">articles.user_id AS userId<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">articles.updated_at AS updatedAt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0627\u0645 \u0627\u06cc\u0646 Alias\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u062f\u0644 ArticleWithAuthor \u0647\u0645\u0627\u0647\u0646\u06af \u0628\u0627\u0634\u0647. Room \u0628\u0631\u0627\u0633\u0627\u0633 \u0647\u0645\u06cc\u0646 \u0646\u0627\u0645\u200c\u0647\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u200c\u062f\u0647 \u0647\u0631 \u0633\u062a\u0648\u0646 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 \u06a9\u062f\u0627\u0645 \u0648\u06cc\u0698\u06af\u06cc \u06a9\u0644\u0627\u0633 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062e\u0631\u0648\u062c\u06cc<\/strong><strong> Query <\/strong><strong>\u0627\u0632 \u0646\u0648\u0639<\/strong><strong> Flow <\/strong><strong>\u0627\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0631\u0648 \u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">Flow&lt;List&lt;ArticleWithAuthor&gt;&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc Room \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u0644\u06cc\u0633\u062a \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0646\u0645\u06cc\u200c\u062f\u0647\u061b \u0647\u0631 \u0648\u0642\u062a \u062c\u062f\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u06a9\u0646\u0647\u060c \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0645\u062b\u0644\u0627\u064b \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u0627 \u062d\u0630\u0641 \u0645\u0642\u0627\u0644\u0647\u060c ViewModel \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u0633\u062e\u0647 \u062a\u0627\u0632\u0647 \u0644\u06cc\u0633\u062a \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 Compose \u0647\u0645 \u062f\u0648\u0628\u0627\u0631\u0647 UI \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0628\u0639\u062f \u0627\u0632 \u0647\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0633\u062a\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 Query \u0631\u0648 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>OnConflictStrategy.REPLACE<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Insert(\n\n\u00a0\u00a0\u00a0 onConflict =\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 OnConflictStrategy.REPLACE\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Insert<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 onConflict <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 OnConflictStrategy.REPLACE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u0642\u0627\u0644\u0647\u200c\u0627\u06cc \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u06f1 \u0642\u0628\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Room \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0648 \u0646\u0633\u062e\u0647 \u062a\u0627\u0632\u0647 \u0647\u0645\u0648\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u0634\u0647\u060c Conflict \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u0634\u0647. REPLACE \u0645\u06cc\u06af\u0647 \u0631\u062f\u06cc\u0641 \u0642\u0628\u0644\u06cc \u0631\u0648 \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 Sync \u0686\u0646\u062f\u0628\u0627\u0631\u0647 \u0628\u0627\u0639\u062b \u0627\u06cc\u062c\u0627\u062f \u0686\u0646\u062f \u0646\u0633\u062e\u0647 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0627\u0632 \u06cc\u06a9 \u0645\u0642\u0627\u0644\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>insertLocalArticle <\/strong><strong>\u06cc\u06a9 <\/strong><strong>Long <\/strong><strong>\u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u0628\u0631\u0627\u06cc Insert\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0627\u0631\u0646\u060c \u0634\u0646\u0627\u0633\u0647 \u0631\u062f\u06cc\u0641 \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 Long \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">suspend fun insertLocalArticle(&#8230;): Long<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0632 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0628\u0639\u062f\u0647\u0627 \u0645\u0641\u06cc\u062f\u0647\u061b \u0645\u062b\u0644\u0627\u064b \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u06cc\u0645 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0645\u0642\u0627\u0644\u0647 \u062a\u0627\u0632\u0647\u200c\u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u0645 \u06cc\u0627 \u0634\u0646\u0627\u0633\u0647\u200c\u0634 \u0631\u0648 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0639\u062f\u06cc \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>@Update <\/strong><strong>\u0648 <\/strong><strong>@Delete<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 @Update\u060c Room \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Primary Key \u0631\u062f\u06cc\u0641 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0648 \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u0634 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0631 @Delete \u0647\u0645 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 Primary Key \u0647\u0645\u0648\u0646 \u0631\u062f\u06cc\u0641 \u0631\u0648 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0647\u0646\u06af\u0627\u0645 \u0648\u06cc\u0631\u0627\u06cc\u0634\u060c \u0627\u0628\u062a\u062f\u0627 \u0646\u0633\u062e\u0647 \u0627\u0635\u0644\u06cc \u0645\u0642\u0627\u0644\u0647 \u0631\u0648 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645\u060c \u0628\u0627 copy() \u062a\u063a\u06cc\u06cc\u0631\u0634 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647 DAO \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0632 <\/strong><strong>findArticle <\/strong><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">UI \u06cc\u06a9 ArticleWithAuthor \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a @Update \u0648 @Delete \u0631\u0648\u06cc ArticleEntity \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0646. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0648\u0644 \u0645\u0642\u0627\u0644\u0647 \u0627\u0635\u0644\u06cc \u0631\u0648 \u0627\u0632 \u062c\u062f\u0648\u0644 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>dao.findArticle(\n\n\u00a0\u00a0\u00a0 articleId = articleId\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">findArticle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 articleId <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> articleId<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc\u200c\u0634\u06cc\u0645 \u0648\u0627\u0642\u0639\u0627\u064b \u0645\u062d\u0644\u06cc\u0647 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0645\u062c\u0627\u0632 \u0628\u0648\u062f\u0646\u060c \u0639\u0645\u0644\u06cc\u0627\u062a Update \u06cc\u0627 Delete \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u062f\u0627\u062e\u0644 Repository \u0645\u0647\u0645\u0647\u061b \u0686\u0648\u0646 \u0635\u0631\u0641\u0627\u064b \u0645\u062e\u0641\u06cc \u06a9\u0631\u062f\u0646 \u062f\u06a9\u0645\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0631 UI \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0642\u0627\u0644\u0647 \u0633\u0631\u0648\u0631 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>@Database<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646 Annotation \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 Room \u0634\u0627\u0645\u0644 \u0686\u0647 \u062c\u062f\u0648\u0644\u200c\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Database(\n\n\u00a0\u00a0\u00a0 entities = &#91;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 UserEntity::class,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ArticleEntity::class\n\n\u00a0\u00a0\u00a0 &#93;,\n\n\u00a0\u00a0\u00a0 version = 1\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Database<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 entities <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> &#91;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 UserEntity::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ArticleEntity::<\/span><span style=\"color: #6F42C1\">class<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 &#93;,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 version <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">entities \u0641\u0647\u0631\u0633\u062a \u062c\u062f\u0648\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647. version = 1 \u0646\u0633\u062e\u0647 \u0641\u0639\u0644\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u0647. \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0633\u062a\u0648\u0646\u06cc \u0627\u0636\u0627\u0641\u0647 \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0646\u0633\u062e\u0647 \u0631\u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0628\u062f\u06cc\u0645 \u0648 \u0645\u0639\u0645\u0648\u0644\u0627\u064b Migration \u0647\u0645 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>exportSchema = false <\/strong><strong>\u06af\u0630\u0627\u0634\u062a\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 Schema \u0630\u062e\u06cc\u0631\u0647 \u0628\u06a9\u0646\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">exportSchema = false<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0647\u062a\u0631\u0647 Schema\u0647\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0628\u0634\u0646\u060c \u0686\u0648\u0646 \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 Migration \u0648 \u0628\u0631\u0631\u0633\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0641\u06cc\u062f\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> Singleton <\/strong><strong>\u0628\u0631\u0627\u06cc<\/strong><strong> Database<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a\u0646 \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 Room Database \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0648 \u0645\u0634\u06a9\u0644\u200c\u0633\u0627\u0632\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0645\u0634\u062a\u0631\u06a9 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private var instance:\n\n\u00a0\u00a0\u00a0 LocalDatabase? = null<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> instance:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 LocalDatabase? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 getInstance \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 Database \u0642\u0628\u0644\u0627\u064b \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u06cc\u0627 \u0646\u0647. \u0627\u06af\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0647\u0645\u0648\u0646 \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647\u061b \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0645\u0627\u0645 Repository\u0647\u0627 \u0648 DAO\u0647\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 \u0645\u0634\u062a\u0631\u06a9 \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>@Volatile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631 Database \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Volatile\n\nprivate var instance:\n\n\u00a0\u00a0\u00a0 LocalDatabase? = null<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Volatile<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> instance:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 LocalDatabase? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">@Volatile \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u06af\u0631 \u0686\u0646\u062f Thread \u0628\u0647 \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0646\u060c \u0622\u062e\u0631\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0628\u06cc\u0646\u0646. \u0628\u062f\u0648\u0646 \u0627\u0648\u0646 \u0645\u0645\u06a9\u0646 \u0628\u0648\u062f \u06cc\u06a9 Thread \u0647\u0646\u0648\u0632 \u0645\u0642\u062f\u0627\u0631 \u0642\u062f\u06cc\u0645\u06cc null \u0631\u0648 \u0628\u0628\u06cc\u0646\u0647 \u0648 \u062a\u0635\u0648\u0631 \u0628\u06a9\u0646\u0647 Database \u0633\u0627\u062e\u062a\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>synchronized<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a \u0633\u0627\u062e\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>synchronized(this) {\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">synchronized<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">this<\/span><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u062f\u0631 \u06cc\u06a9 \u0644\u062d\u0638\u0647 \u0641\u0642\u0637 \u06cc\u06a9 Thread \u0648\u0627\u0631\u062f \u0628\u062e\u0634 \u0633\u0627\u062e\u062a Database \u0628\u0634\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06af\u0631 \u062f\u0648 \u0628\u062e\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 getInstance \u0631\u0648 \u0635\u062f\u0627 \u0628\u0632\u0646\u0646\u060c \u062f\u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062c\u062f\u0627 \u0633\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Room.databaseBuilder<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Room.databaseBuilder(\n\n\u00a0\u00a0\u00a0 context.applicationContext,\n\n\u00a0\u00a0\u00a0 LocalDatabase::class.java,\n\n\u00a0\u00a0\u00a0 \"offline_articles.db\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">Room.<\/span><span style=\"color: #6F42C1\">databaseBuilder<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 context.applicationContext,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 LocalDatabase::<\/span><span style=\"color: #6F42C1\">class<\/span><span style=\"color: #24292E\">.java,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;offline_articles.db&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0648\u0644 Context \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0648\u0645 \u06a9\u0644\u0627\u0633 Database \u0631\u0648 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0633\u0648\u0645 \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 SQLite \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0627\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062f\u0631 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 offline_articles.db \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0628\u062f\u06cc\u0644 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc<\/strong><strong> API <\/strong><strong>\u0628\u0647<\/strong><strong> Entity<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 Retrofit \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0627\u062e\u0644 Room \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0627\u0628\u062a\u062f\u0627 \u0645\u062f\u0644\u200c\u0647\u0627 \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>response.users.map { user ->\n\n\u00a0\u00a0\u00a0 UserEntity(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 id = user.id,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name = user.name,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 email = user.email\n\n\u00a0\u00a0\u00a0 )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">response.users.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> { user <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">UserEntity<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.id,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.name,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 email <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> user.email<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0645\u0631\u0632 \u0628\u06cc\u0646 \u0634\u0628\u06a9\u0647 \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062d\u0644\u06cc\u0647. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u0633\u0627\u062e\u062a\u0627\u0631 API \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u060c \u0644\u0632\u0648\u0645\u0627\u064b \u0645\u062c\u0628\u0648\u0631 \u0646\u06cc\u0633\u062a\u06cc\u0645 \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u0648\u0644 Room \u0631\u0648 \u0647\u0645 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0648\u0646\u200c\u0637\u0648\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> UI <\/strong><strong>\u0647\u0645\u06cc\u0634\u0647 \u0627\u0632<\/strong><strong> Room <\/strong><strong>\u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u0631\u0648\u0631\u060c Repository \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 \u0644\u06cc\u0633\u062a \u0633\u0631\u0648\u0631 \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 ViewModel \u062a\u062d\u0648\u06cc\u0644 \u0646\u0645\u06cc\u200c\u062f\u0647. ViewModel \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 Flow \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062d\u0644\u06cc \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>repository\n\n\u00a0\u00a0\u00a0 .articles\n\n\u00a0\u00a0\u00a0 .collect { ... }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">repository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .articles<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">collect<\/span><span style=\"color: #24292E\"> { <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">. }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Sync \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 Room \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647\u060c Flow \u062e\u0648\u062f\u06a9\u0627\u0631 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f \u0631\u0648 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 UI \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">\u0633\u0631\u0648\u0631<br>\u2193<br>Room<br>\u2193<br>UI<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u06af\u0627\u0647\u06cc UI \u0627\u0632 \u0633\u0631\u0648\u0631 \u0628\u062e\u0648\u0646\u0647 \u0648 \u06af\u0627\u0647\u06cc \u0627\u0632 Room.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0646\u06af\u0627\u0645 \u0642\u0637\u0639 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 syncFromServer\u0628\u0647 \u062e\u0627\u0637\u0631 IOException \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0634\u0647\u060c Repository \u0641\u0642\u0637 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc Room \u0631\u0648 \u062d\u0630\u0641 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647. \u0686\u0648\u0646 ViewModel \u0647\u0645\u0686\u0646\u0627\u0646 Flow \u0645\u062d\u0644\u06cc \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646. \u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u067e\u0627\u06cc\u0647 \u0631\u0641\u062a\u0627\u0631 Offline-first \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647 \u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0645\u0642\u0627\u0644\u0647 \u0645\u062d\u0644\u06cc<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u0645\u0642\u0627\u0644\u0647 \u0645\u062d\u0644\u06cc \u0627\u0632 \u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>System.currentTimeMillis()\n\n\u00a0\u00a0\u00a0 .div(1000)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">System.<\/span><span style=\"color: #6F42C1\">currentTimeMillis<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">div<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">1000<\/span><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">currentTimeMillis \u0632\u0645\u0627\u0646 \u0631\u0648 \u0628\u0631\u062d\u0633\u0628 \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 \u0645\u06cc\u200c\u062f\u0647\u060c \u0627\u0645\u0627 \u0632\u0645\u0627\u0646 \u0633\u0631\u0648\u0631 \u0628\u0631\u062d\u0633\u0628 \u062b\u0627\u0646\u06cc\u0647 \u0628\u0648\u062f. \u0628\u0627 \u062a\u0642\u0633\u06cc\u0645 \u0628\u0631 \u0647\u0632\u0627\u0631\u060c \u0647\u0631 \u062f\u0648 \u0645\u0646\u0628\u0639 \u0632\u0645\u0627\u0646 \u0648\u0627\u062d\u062f \u06cc\u06a9\u0633\u0627\u0646\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u0648 Query \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0642\u0627\u0644\u0627\u062a \u0645\u062d\u0644\u06cc \u0648 \u0633\u0631\u0648\u0631\u06cc \u0631\u0648 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u062f\u0631\u0633\u062a \u0645\u0631\u062a\u0628 \u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062a\u063a\u06cc\u0631 <\/strong><strong>editingArticleId<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0641\u0631\u0645 \u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u0641\u0632\u0648\u062f\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0647 \u06cc\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val editingArticleId:\n\n\u00a0\u00a0\u00a0 Int? = null<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> editingArticleId:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Int? <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">null<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 null \u0628\u0627\u0634\u0647\u060c \u0628\u0627 \u0632\u062f\u0646 \u062f\u06a9\u0645\u0647 \u06cc\u06a9 \u0645\u0642\u0627\u0644\u0647 \u062a\u0627\u0632\u0647 Insert \u0645\u06cc\u0634\u0647. \u0627\u06af\u0631 \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u062f\u0627\u062e\u0644\u0634 \u0628\u0627\u0634\u0647\u060c Repository \u0647\u0645\u0648\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0648 \u067e\u06cc\u062f\u0627 \u0648 Update \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 \u06cc\u06a9 \u0641\u0631\u0645 \u0645\u0634\u062a\u0631\u06a9 \u0647\u0645 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648 \u0647\u0645 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0641\u0642\u0637 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0642\u0627\u0628\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634\u200c\u0627\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06cc\u0627 \u062d\u0630\u0641 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if (\n\n\u00a0\u00a0\u00a0 !article.isLocal\n\n) {\n\n\u00a0\u00a0\u00a0 return\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">!<\/span><span style=\"color: #24292E\">article.isLocal<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">return<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0647\u0633\u062a\u0646. \u0627\u06af\u0631 \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0645\u062d\u0644\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627 Sync \u0628\u0639\u062f\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u0631\u0648\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0686\u0648\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc \u062f\u0648\u0637\u0631\u0641\u0647 \u0646\u062f\u0627\u0631\u06cc\u0645\u060c \u0641\u0642\u0637 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc\u06cc \u0631\u0648 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u06af\u0630\u0627\u0634\u062a\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062f\u0627\u062e\u0644 \u062e\u0648\u062f \u06af\u0648\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Sync <\/strong><strong>\u06cc\u06a9\u200c\u0637\u0631\u0641\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 Sync \u0641\u0642\u0637 \u0627\u0632 \u0633\u0631\u0648\u0631 \u0628\u0647 \u06af\u0648\u0634\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">MySQL<br>\u2193<br>PHP<br>\u2193<br>Retrofit<br>\u2193<br>Room<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0646 \u0628\u0647 PHP \u0648 MySQL \u0627\u0631\u0633\u0627\u0644 \u0646\u0645\u06cc\u200c\u0634\u0646. \u0633\u0627\u062e\u062a Sync \u062f\u0648\u0637\u0631\u0641\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u0627\u0636\u0627\u0641\u0647\u200c\u0627\u06cc \u0645\u062b\u0644 \u0648\u0636\u0639\u06cc\u062a \u0627\u0631\u0633\u0627\u0644\u060c \u0634\u0646\u0627\u0633\u0647 \u0633\u0631\u0648\u0631\u060c \u0632\u0645\u0627\u0646 \u0622\u062e\u0631\u06cc\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062d\u0644 \u062a\u0639\u0627\u0631\u0636 \u062f\u0627\u0631\u0647 \u0648 \u0628\u0631\u0627\u06cc \u062f\u0631\u0633 \u0645\u0642\u062f\u0645\u0627\u062a\u06cc Room \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634<\/strong><strong> KAPT <\/strong><strong>\u0648<\/strong><strong> Room Compiler<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0642\u0637 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 room-runtime \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. Room \u0627\u0632 Annotation\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 @Entity\u060c @Dao \u0648 @Database \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0627\u06cc\u062f \u0647\u0646\u06af\u0627\u0645 Build \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u0648\u0646\u200c\u0647\u0627 \u06a9\u062f \u0648\u0627\u0642\u0639\u06cc Database \u0648 DAO \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0628\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 room-compiler \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647 \u0648 kapt \u067e\u0631\u062f\u0627\u0632\u0634 Annotation\u0647\u0627\u06cc \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0631\u0648 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>kapt(\n\n\u00a0\u00a0\u00a0 \"androidx.room:room-compiler:$roomVersion\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">kapt<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;androidx.room:room-compiler:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Compiler \u06cc\u0627 KAPT \u0627\u0636\u0627\u0641\u0647 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc Room \u062a\u0648\u0644\u06cc\u062f \u0646\u0645\u06cc\u200c\u0634\u0646 \u0648 \u067e\u0631\u0648\u0698\u0647 Build \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>room-ktx<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Dependency \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0628\u0647\u062a\u0631 Room \u0627\u0632 Coroutine \u0648 Flow \u0631\u0648 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"androidx.room:room-ktx:$roomVersion\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;androidx.room:room-ktx:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u06a9\u0645\u06a9 \u0627\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc DAO \u0631\u0648 suspend \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645 \u0648 Query\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 Flow \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645\u061b \u06cc\u0639\u0646\u06cc \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0648\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 Room \u0628\u0647 ViewModel \u0648 Compose \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u067e\u0644\u0627\u06af\u06cc\u0646 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>dependencies {\n\n\u00a0\u00a0\u00a0 val roomVersion = \"2.8.4\"\n\n\u00a0\u00a0\u00a0 implementation(\"androidx.room:room-runtime:$roomVersion\")\n\n\u00a0\u00a0\u00a0 implementation(\"androidx.room:room-ktx:$roomVersion\")\n\n\u00a0\u00a0\u00a0 kapt(\"androidx.room:room-compiler:$roomVersion\")\n\n\u067e\u0644\u0627\u06af\u06cc\u0646\n\n\u00a0\u00a0\u00a0 id(\"org.jetbrains.kotlin.kapt\")\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">dependencies<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> roomVersion <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;2.8.4&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;androidx.room:room-runtime:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;androidx.room:room-ktx:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">kapt<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;androidx.room:room-compiler:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u067e\u0644\u0627\u06af\u06cc\u0646<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">id<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;org.jetbrains.kotlin.kapt&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<pre class=\"wp-block-preformatted\"><br><br><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062a\u063a\u06cc\u0631 <\/strong><strong>roomVersion<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val roomVersion = &#8220;2.8.4&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647\u200c\u06cc \u0647\u0631 \u0633\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Room \u0628\u0627\u06cc\u062f \u0628\u0627 \u0647\u0645 \u0647\u0645\u0627\u0647\u0646\u06af \u0628\u0627\u0634\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0639\u062f\u062f \u0646\u0633\u062e\u0647 \u0631\u0648 \u0633\u0647 \u0628\u0627\u0631 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0647 \u0646\u0627\u0645 roomVersion \u0633\u0627\u062e\u062a\u06cc\u0645 \u0648 \u0647\u0645\u0647\u200c\u06cc Dependency\u0647\u0627\u06cc Room \u0631\u0648 \u0628\u0647 \u0647\u0645\u0648\u0646 \u0648\u0635\u0644 \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0647\u0645 \u06a9\u062f \u0631\u0648 \u0645\u0631\u062a\u0628\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0647\u0645 \u0628\u0639\u062f\u0627\u064b \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0633\u062e\u0647 \u0641\u0642\u0637 \u06a9\u0627\u0641\u06cc\u0647 \u0647\u0645\u06cc\u0646 \u06cc\u06a9 \u062e\u0637 \u0631\u0648 \u0639\u0648\u0636 \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0646\u0633\u062e\u0647\u200c\u06cc room-runtime\u060c room-ktx \u0648 room-compiler \u0628\u0627 \u0647\u0645 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u0647\u060c \u0645\u0645\u06a9\u0646\u0647 \u0647\u0646\u06af\u0627\u0645 Build \u06cc\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0627 \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0628\u0634\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc <\/strong><strong>room-runtime<\/strong><\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"androidx.room:room-runtime:$roomVersion\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;androidx.room:room-runtime:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">room-runtime \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u06cc \u0627\u0635\u0644\u06cc Room \u0627\u0633\u062a.<br>\u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0648 Annotation\u0647\u0627\u06cc \u0645\u0647\u0645\u06cc \u0645\u062b\u0644 RoomDatabase\u060c @Entity\u060c @Dao\u060c @Database\u060c @Insert\u060c @Update\u060c @Delete \u0648 @Query \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0647\u0645\u06cc\u0646 Dependency \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646. \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u062f\u0648\u0646 room-runtime \u0627\u0635\u0644\u0627\u064b \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u0633\u062a\u06cc\u0645 \u062c\u062f\u0648\u0644\u200c\u0647\u0627\u060c DAO \u0648 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062d\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0645\u0686\u0646\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Room \u0631\u0648 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 SQLite \u062f\u0627\u062e\u0644\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc <\/strong><strong>room-ktx<\/strong><\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"androidx.room:room-ktx:$roomVersion\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;androidx.room:room-ktx:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">room-ktx \u0627\u0645\u06a9\u0627\u0646\u0627\u062a Room \u0631\u0648 \u0628\u0631\u0627\u06cc \u06a9\u0627\u062a\u0644\u06cc\u0646 \u06a9\u0627\u0645\u0644\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 Room \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0628\u0627 Coroutine \u0648 Flow \u06a9\u0627\u0631 \u0628\u06a9\u0646\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646\u060c \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062d\u0630\u0641 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 suspend \u0646\u0648\u0634\u062a\u06cc\u0645 \u0648 \u0644\u06cc\u0633\u062a \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0631\u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Flow \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun observeArticles():\n\n\u00a0\u00a0\u00a0 Flow&lt;List&lt;ArticleWithAuthor>><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">observeArticles<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Flow<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">ArticleWithAuthor<\/span><span style=\"color: #D73A49\">&gt;&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u0646\u0627\u0633\u0628 \u0627\u0632 \u0647\u0645\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u062a\u0644\u06cc\u0646\u06cc \u0628\u0627 room-ktx \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u0628\u062f\u0648\u0646 \u0642\u0641\u0644 \u06a9\u0631\u062f\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645 \u0648 \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 \u062c\u062f\u0648\u0644\u200c\u0647\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u0647\u060c \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 Flow \u0628\u0647 ViewModel \u0648 Compose \u0628\u0631\u0633\u0648\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc <\/strong><strong>room-compiler<\/strong><\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>kapt(\n\n\u00a0\u00a0\u00a0 \"androidx.room:room-compiler:$roomVersion\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">kapt<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;androidx.room:room-compiler:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u062f\u0627\u062e\u0644 \u06a9\u062f \u0641\u0642\u0637 \u0628\u0627 Annotation\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 @Entity\u060c @Dao \u0648 @Database \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u06cc\u0645 \u06a9\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0686\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u061b \u0627\u0645\u0627 \u067e\u0634\u062a \u0627\u06cc\u0646 Annotation\u0647\u0627 \u0647\u0646\u0648\u0632 \u06a9\u062f \u0627\u062c\u0631\u0627\u06cc\u06cc \u0648\u0627\u0642\u0639\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647. room-compiler \u0647\u0646\u06af\u0627\u0645 Build \u067e\u0631\u0648\u0698\u0647\u060c \u06a9\u062f\u0647\u0627 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0631\u0627\u0633\u0627\u0633 \u0627\u0648\u0646\u200c\u0647\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc DAO \u0648 Database \u0631\u0648 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0645\u062b\u0644\u0627\u064b \u0645\u0627 \u0641\u0642\u0637 \u0627\u06cc\u0646 Interface \u0631\u0648 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">@Dao<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">interface ContentDao<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 Room Compiler \u067e\u0634\u062a \u0635\u062d\u0646\u0647 \u06a9\u0644\u0627\u0633\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 Query\u0647\u0627 \u0631\u0648 \u0648\u0627\u0642\u0639\u0627\u064b \u0631\u0648\u06cc SQLite \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0647\u0645\u0686\u0646\u06cc\u0646 Query\u0647\u0627\u06cc SQL \u0631\u0648 \u0647\u0646\u06af\u0627\u0645 Build \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0646\u0627\u0645 \u062c\u062f\u0648\u0644\u060c \u0633\u062a\u0648\u0646 \u06cc\u0627 \u062e\u0631\u0648\u062c\u06cc Query \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0627\u0634\u0647\u060c \u062e\u06cc\u0644\u06cc \u0627\u0632 \u062e\u0637\u0627\u0647\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>room-compiler <\/strong><strong>\u0631\u0627 \u0628\u0627 <\/strong><strong>kapt <\/strong><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u062e\u0644\u0627\u0641 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0639\u0645\u0648\u0644\u06cc \u06a9\u0647 \u0628\u0627 implementation \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0646\u060c room-compiler \u0628\u0627\u06cc\u062f \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u062f \u0627\u062c\u0631\u0627 \u0628\u0634\u0647 \u0648 Annotation\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0631\u0648 \u067e\u0631\u062f\u0627\u0632\u0634 \u0628\u06a9\u0646\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0627 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>kapt(\n\n\u00a0\u00a0\u00a0 \"androidx.room:room-compiler:$roomVersion\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">kapt<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;androidx.room:room-compiler:<\/span><span style=\"color: #005CC5\">$roomVersion<\/span><span style=\"color: #032F62\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u062e\u0634\u06cc \u0627\u0632 \u0645\u0646\u0637\u0642 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0627\u0634\u0647\u061b \u0648\u0638\u06cc\u0641\u0647\u200c\u0627\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 Build\u060c \u06a9\u062f\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 Room \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u0644\u0627\u06af\u06cc\u0646<\/strong><strong> KAPT<\/strong><\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>id(\n\n\u00a0\u00a0\u00a0 \"org.jetbrains.kotlin.kapt\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">id<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;org.jetbrains.kotlin.kapt&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">KAPT \u0645\u062e\u0641\u0641 <strong>Kotlin Annotation Processing Tool<\/strong> \u0627\u0633\u062a. \u0627\u06cc\u0646 \u067e\u0644\u0627\u06af\u06cc\u0646 \u0628\u0647 Gradle \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 Annotation\u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u06a9\u062f \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0631\u0648 \u0628\u0647 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Room Compiler \u062a\u062d\u0648\u06cc\u0644 \u0628\u062f\u0647. \u0648\u0642\u062a\u06cc Room \u0628\u0627 Annotation\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 @Entity \u0648 @Dao \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0645\u06cc\u0634\u0647\u060c KAPT \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0628\u0647 room-compiler \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646 \u067e\u0634\u062a \u0635\u062d\u0646\u0647 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\" dir=\"ltr\">@Entity \u0648 @Dao \u0648 @Database<br>\u2193<br>KAPT<br>\u2193<br>Room Compiler<br>\u2193<br>\u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc DAO \u0648 Database<br>\u2193<br>\u0627\u062a\u0635\u0627\u0644 Room \u0628\u0647 SQLite<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 room-compiler \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 \u0648\u0644\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646 KAPT \u0641\u0639\u0627\u0644 \u0646\u0628\u0627\u0634\u0647\u060c Annotation\u0647\u0627\u06cc Room \u067e\u0631\u062f\u0627\u0632\u0634 \u0646\u0645\u06cc\u200c\u0634\u0646 \u0648 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062a\u0648\u0644\u06cc\u062f \u0646\u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u067e\u0631\u0648\u0698\u0647 \u0647\u0646\u06af\u0627\u0645 Build \u0628\u0627 \u062e\u0637\u0627 \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0647\u0631 \u0633\u0647<\/strong><strong> Dependency <\/strong><strong>\u0644\u0627\u0632\u0645\u200c\u0627\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0633\u0647 \u0645\u0648\u0631\u062f \u0647\u0631\u06a9\u062f\u0648\u0645 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">room-runtime<br>\u2193<br>\u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0648 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0627\u0635\u0644\u06cc Room \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<br>room-ktx<br>\u2193<br>\u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0628\u0647\u062a\u0631 Room \u0628\u0627 Kotlin\u060c Coroutine \u0648 Flow<br>room-compiler + KAPT<br>\u2193<br>\u067e\u0631\u062f\u0627\u0632\u0634 Annotation\u0647\u0627 \u0648 \u062a\u0648\u0644\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0647\u0646\u06af\u0627\u0645 Build<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0647\u06cc\u0686\u200c\u06a9\u062f\u0648\u0645 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0631\u0648 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. room-runtime \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0631\u0648 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c room-ktx \u06a9\u0627\u0631 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0631\u0648 \u0631\u0627\u062d\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 room-compiler \u0647\u0645\u0631\u0627\u0647 KAPT \u06a9\u062f\u0647\u0627\u06cc \u067e\u0634\u062a \u0635\u062d\u0646\u0647\u200c\u06cc Room \u0631\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f5<br>Repository Pattern<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 \u0645\u0627 \u0628\u0627 Room \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u0645 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062f\u0627\u062e\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06af\u0648\u0634\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627 \u062f\u0631 \u0622\u0646 \u062d\u0627\u0644\u062a \u0627\u06cc\u0646 \u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose<br>\u2193<br>ViewModel<br>\u2193<br>Database(Room)<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc ViewModel \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0635\u062d\u0628\u062a \u0645\u06cc\u200c\u06a9\u0631\u062f. \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0648\u0686\u06a9 \u0634\u0627\u06cc\u062f \u0645\u0634\u06a9\u0644\u06cc \u0646\u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u062e\u06cc\u0644\u06cc \u0632\u0648\u062f \u062f\u0631\u062f\u0633\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0686\u0631\u0627\u061f \u0686\u0648\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0642\u0637 \u0627\u0632 \u06cc\u06a9 \u062c\u0627 \u0646\u0645\u06cc\u200c\u0622\u06cc\u062f. \u0645\u062b\u0644\u0627\u064b \u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0632 API \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06af\u06cc\u0631\u062f<\/li>\n\n\n\n<li>\u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u062d\u0644\u06cc \u0628\u062e\u0648\u0627\u0646\u062f<\/li>\n\n\n\n<li>Cache \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f<\/li>\n\n\n\n<li>\u0641\u0627\u06cc\u0644 \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 ViewModel \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0627 \u0647\u0645\u0647 \u0627\u06cc\u0646\u200c\u0647\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u062e\u06cc\u0644\u06cc \u0634\u0644\u0648\u063a \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 Repository \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Repository \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Repository \u06cc\u06a9 \u0644\u0627\u06cc\u0647 \u0628\u06cc\u0646 ViewModel \u0648 \u0645\u0646\u0627\u0628\u0639 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc ViewModel \u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u06a9\u062c\u0627 \u0645\u06cc\u200c\u0622\u06cc\u062f. \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Compose\n\n\u2193\n\nViewModel\n\n\u2193\n\nRepository\n\n\u2193\n\nDatabase\n\n\u06cc\u0627\n\nAPI\n\n\u06cc\u0627\n\nCache\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 \u0633\u0627\u062e\u062a\u0627\u0631 \u0642\u0628\u0644\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NoteViewModel(\n\nprivate val dao:NoteDao\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao:<\/span><span style=\"color: #6F42C1\">NoteDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0631\u06cc\u0645. \u06cc\u0639\u0646\u06cc ViewModel \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 DAO \u0648\u0635\u0644 \u0634\u062f\u0647. \u062d\u0627\u0644\u0627 \u0641\u0631\u062f\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645 \u0642\u0628\u0644 \u0627\u0632 \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0647\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f \u0628\u06af\u06cc\u0631. \u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f ViewModel \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>DAO<br>\u2193<br>Retrofit<br>\u2193<br>Cache<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0645\u200c\u06a9\u0645 ViewModel \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0632\u0631\u06af \u0628\u0627 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Repository \u0645\u0634\u06a9\u0644 \u0631\u0627 \u062d\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 ViewModel \u0641\u0642\u0637 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u062f\u0647. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>viewModel.loadNotes()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">viewModel.<\/span><span style=\"color: #6F42C1\">loadNotes<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062e\u0648\u062f\u0634 \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0632 Room \u0622\u0645\u062f\u061f<\/li>\n\n\n\n<li>\u0627\u0632 API \u0622\u0645\u062f\u061f<\/li>\n\n\n\n<li>\u0627\u0632 Cache \u0622\u0645\u062f\u061f<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u0628\u0627 Repository \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Repository:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\n\n\npresentation\n\n \u2514\u2500\u2500 NoteViewModel\n\n\n\ndomain\n\n \u2514\u2500\u2500 NoteRepository\n\n\n\ndata\n\n \u251c\u2500\u2500 Room\n\n \u2502    \u2514\u2500\u2500 NoteDao\n\n\n \u2514\u2500\u2500 Repository\n\n      \u2514\u2500\u2500 NoteRepositoryImpl\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a Interface Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0644\u0627\u06cc\u0647 Domain:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface NoteRepository{\n\n\n    fun getNotes():\n\n    Flow&lt;List&lt;Note>>\n\n\n\n    suspend fun insertNote(\n        note:Note\n    )\n\n\n\n    suspend fun deleteNote(\n        note:Note\n    )\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteRepository<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    Flow<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">Note<\/span><span style=\"color: #D73A49\">&gt;&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">insertNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">deleteNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0642\u0637 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0627\u0633\u062a. \u06cc\u0639\u0646\u06cc \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0647\u0631 Repository \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0686\u0637\u0648\u0631.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0644\u0627\u06cc\u0647 Data:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NoteRepositoryImpl(\n\nprivate val dao:NoteDao\n\n):NoteRepository{\n\n\noverride fun getNotes():\n\nFlow&lt;List&lt;Note>>{\n\n\nreturn dao.getNotes()\n\n\n}\n\n\n\noverride suspend fun insertNote(\n\nnote:Note\n\n){\n\n\ndao.insertNote(note)\n\n\n}\n\n\n\noverride suspend fun deleteNote(\n\nnote:Note\n\n){\n\n\ndao.deleteNote(note)\n\n\n}\n\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao:<\/span><span style=\"color: #6F42C1\">NoteDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">):<\/span><span style=\"color: #6F42C1\">NoteRepository<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Flow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Note<\/span><span style=\"color: #24292E\">&gt;&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> dao.<\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">insertNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">insertNote<\/span><span style=\"color: #24292E\">(note)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">deleteNote<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">note:<\/span><span style=\"color: #6F42C1\">Note<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">deleteNote<\/span><span style=\"color: #24292E\">(note)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062a\u063a\u06cc\u06cc\u0631 ViewModel<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NoteViewModel(\n\nprivate val dao:NoteDao\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao:<\/span><span style=\"color: #6F42C1\">NoteDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NoteViewModel(\n\nprivate val repository:\nNoteRepository\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NoteViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">NoteRepository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 ViewModel \u0641\u0642\u0637 Repository \u0631\u0627 \u0645\u06cc\u200c\u0634\u0646\u0627\u0633\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val notes = repository.getNotes()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> notes <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> repository.<\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0645\u0627\u0645. ViewModel \u06a9\u0627\u0631\u06cc \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 Room API Cache \u06a9\u062c\u0627 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 Repository \u0645\u0647\u0645 \u0627\u0633\u062a\u061f<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">\u06f1. \u062c\u062f\u0627 \u0634\u062f\u0646 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0631\u0648\u0632:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Room<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u062f\u0627:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u06f2. \u062a\u0633\u062a \u0631\u0627\u062d\u062a\u200c\u062a\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 ViewModel \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645. \u0628\u062f\u0648\u0646 Repository:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>Database \u0648\u0627\u0642\u0639\u06cc<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648\u0627\u0642\u0639\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645. \u0627\u0645\u0627 \u0628\u0627 Repository \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062a\u0633\u062a\u06cc \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>FakeNoteRepository()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">FakeNoteRepository<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 Fake Repository<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class FakeNoteRepository:\n\nNoteRepository{\n\n\noverride fun getNotes():\n\nFlow&lt;List&lt;Note>>{\n\n\nreturn flowOf(\n\nlistOf(\n\nNote(\n1,\n\"Test\",\n\"Hello\"\n)\n\n)\n\n)\n\n}\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">FakeNoteRepository<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">NoteRepository<\/span><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNotes<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Flow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">Note<\/span><span style=\"color: #24292E\">&gt;&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">flowOf<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Note<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Test&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #032F62\">&quot;Hello&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0628\u062f\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648\u0627\u0642\u0639\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 ViewModel \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u0628\u0631\u0627\u06cc Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Repository \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u0641\u0631\u0636 \u06a9\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0642\u06cc\u0645\u062a\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u0631\u062f. \u062d\u0627\u0644\u062a \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0634\u06a9\u0644 \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0634\u0648\u062f \u0647\u06cc\u0686 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0646\u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 Repository:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ViewModel\n\n\u2193\n\nRepository\n\n\u2193\n\nRoom Cache\n\n+\nAPI\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>App Open\n\n\u2193\n\nRepository\n\n\u2193\n\nRoom\n\n\u2193\n\n\u0646\u0645\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u062f\u06cc\u0645\u06cc\n\n\u2193\n\nAPI\n\n\u2193\n\n\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f\n\n\u2193\n\n\u0630\u062e\u06cc\u0631\u0647 Room\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u0628\u0639\u062f\u0627\u064b \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627 \u0631\u0627 \u0622\u0646\u0644\u0627\u06cc\u0646 \u06a9\u0646\u06cc\u0645. \u0646\u0633\u062e\u0647 \u0627\u0648\u0644:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Room<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647 \u062f\u0648\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Room<br>+<br>API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647 \u0633\u0648\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository<br>\u2193<br>Cache<br>\u2193<br>Room<br>\u2193<br>API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u062f\u0631 \u0647\u0631 \u0633\u0647 \u062d\u0627\u0644\u062a \u06cc\u06a9\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Repository \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0635\u0641\u062d\u0647 \u0642\u06cc\u0645\u062a \u062f\u0644\u0627\u0631 \u0628\u062f\u0648\u0646 Repository:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>Retrofit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f\u0627\u064b \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0622\u062e\u0631\u06cc\u0646 \u0642\u06cc\u0645\u062a \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u0622\u0641\u0644\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0642\u06cc\u0645\u062a \u0628\u0633\u0627\u0632\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f ViewModel \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 Repository:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>Repository<br>\u2193<br>Room<br>+<br>Retrofit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0645\u0627\u0645 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0627\u062e\u0644 Repository \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Compose\n\n\u2193\n\nViewModel\n\n\u2193\n\nRepository\n\n\u2193\n\nData Source\n\n\n        \u2199        \u2198\n\n     Room       API\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062e\u0644 ContentRepository.kt \u0628\u0648\u062f. \u0642\u0628\u0644\u0627\u064b \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062f\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class ContentRepository(\n\n\u00a0\u00a0\u00a0 private val api: ContentApi,\n\u00a0\u00a0\u00a0 private val dao: ContentDao\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ContentRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api: <\/span><span style=\"color: #6F42C1\">ContentApi<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao: <\/span><span style=\"color: #6F42C1\">ContentDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0647 \u0633\u0647 \u0628\u062e\u0634 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">interface ContentRepository<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f Repository \u0627\u0633\u062a.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class ContentRepositoryImpl :\n\n\u00a0\u00a0\u00a0 ContentRepository<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ContentRepositoryImpl<\/span><span style=\"color: #24292E\"> :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentRepository<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 Room \u0648 Retrofit \u0627\u0633\u062a.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class FakeContentRepository :\n\n\u00a0\u00a0\u00a0 ContentRepository<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">FakeContentRepository<\/span><span style=\"color: #24292E\"> :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentRepository<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u062f\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0633\u0631\u0648\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u063a\u06cc\u06cc\u0631<\/strong><strong> ContentViewModel<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0646\u0637\u0642 ViewModel \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0645\u0648\u0646 \u0642\u0628\u0644\u06cc \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f\u060c \u0627\u0645\u0627 \u0646\u0648\u0639 Repository \u0645\u0647\u0645 \u0634\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class ContentViewModel(\n\n\u00a0\u00a0\u00a0 private val repository: ContentRepository\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ContentViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository: <\/span><span style=\"color: #6F42C1\">ContentRepository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 ViewModel \u0628\u0647 Interface \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u060c \u0646\u0647 \u0628\u0647 \u06a9\u0644\u0627\u0633 \u0648\u0627\u0642\u0639\u06cc:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ContentRepositoryImpl<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 ViewModel\u060c Repository \u0648\u0627\u0642\u0639\u06cc \u06cc\u0627 Fake \u0631\u0648 \u0628\u0647\u0634 \u0628\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u063a\u06cc\u06cc\u0631<\/strong><strong> MainActivity<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 MainActivity \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u06a9\u062f\u0648\u0645 Repository \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val repository: ContentRepository =\n\n\u00a0\u00a0\u00a0 if (USE_FAKE_REPOSITORY) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FakeContentRepository()\n\n\u00a0\u00a0\u00a0 } else {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ContentRepositoryImpl(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 api = RoomNetwork.api,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dao = database.contentDao()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository: <\/span><span style=\"color: #6F42C1\">ContentRepository<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (USE_FAKE_REPOSITORY) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">FakeContentRepository<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 } <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">ContentRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 api <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> RoomNetwork.api,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dao <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> database.<\/span><span style=\"color: #6F42C1\">contentDao<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u062e\u0634\u060c \u062a\u0641\u0627\u0648\u062a \u0627\u0635\u0644\u06cc \u0639\u0645\u0644\u06cc \u062f\u0631\u0633 \u06f1\u06f5 \u0627\u0633\u062a. \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">USE_FAKE_REPOSITORY = true<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 Room \u0648 API \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647\u060c \u0648\u0644\u06cc ViewModel \u0648 UI \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u062f\u0648\u0645 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06a9\u0631\u062f\u0646\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u062e\u0627\u0635\u06cc \u0646\u062f\u0627\u0634\u062a\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">RoomModels.kt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ContentApi.kt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">RoomNetwork.kt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">LocalDatabase.kt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ContentScreen.kt<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0645\u062f\u0644\u200c\u0647\u0627\u060c API\u060c Room \u0648 \u0638\u0627\u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u0648\u0646 \u0642\u0628\u0644\u06cc \u0628\u0648\u062f\u0646. \u062f\u0631\u0633 \u06f1\u06f5 \u062f\u0631\u0628\u0627\u0631\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u062c\u062f\u06cc\u062f \u0646\u0628\u0648\u062f\u061b \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 <strong>\u0686\u0647 \u06a9\u0633\u06cc \u0628\u0627\u06cc\u062f \u0628\u0627<\/strong><strong> Room <\/strong><strong>\u0648<\/strong><strong> API <\/strong><strong>\u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u0633 \u0686\u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0645 \u0628\u0648\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0631\u0633 \u06f1\u06f4 \u0645\u0627 \u0627\u0632 \u0642\u0628\u0644 \u0627\u06cc\u0646 \u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose<br>\u2193<br>ViewModel<br>\u2193<br>ContentRepository<br>\u2193<br>Room + API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0637\u0628\u0642 \u0645\u062a\u0646 \u062f\u0631\u0633\u060c \u0628\u0647\u062a\u0631 \u0628\u0648\u062f \u062f\u0631\u0633 \u06f1\u06f4 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Compose<br>\u2193<br>ViewModel<br>\u2193<br>DAO<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u062a\u0627\u0632\u0647 \u062f\u0631 \u062f\u0631\u0633 \u06f1\u06f5 Repository \u0627\u0636\u0627\u0641\u0647 \u0628\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0631\u0632 \u0628\u06cc\u0646 \u062f\u0648 \u062f\u0631\u0633 \u06a9\u0645\u06cc \u062c\u0644\u0648 \u0627\u0641\u062a\u0627\u062f\u0647 \u0628\u0648\u062f. \u062f\u0631\u0633 \u06f1\u06f5 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 Repository \u0631\u0648 \u0627\u0632 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0627\u062f\u0647 \u0628\u0647 \u06cc\u06a9 Pattern \u06a9\u0627\u0645\u0644\u200c\u062a\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Interface<br>\u2193<br>Implementation \u0648\u0627\u0642\u0639\u06cc<br>\u2193<br>Implementation \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc<br>\u2193<br>\u062a\u0632\u0631\u06cc\u0642 \u0628\u0647 ViewModel<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Repository Pattern <\/strong><strong>\u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062f\u0631\u0633 \u0642\u0628\u0644 ContentRepository \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0639\u0627\u062f\u06cc \u0628\u0648\u062f \u06a9\u0647 ViewModel \u0645\u0633\u062a\u0642\u06cc\u0645 \u0647\u0645\u0648\u0646 \u06a9\u0644\u0627\u0633 \u0631\u0648 \u0645\u06cc\u200c\u0634\u0646\u0627\u062e\u062a. \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0631\u0633 Repository \u0631\u0648 \u0628\u0647 \u06cc\u06a9 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0648 \u0686\u0646\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ContentRepository<br>\u2193<br>ContentRepositoryImpl<br>\u06cc\u0627<br>FakeContentRepository<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 ViewModel \u0641\u0642\u0637 \u0645\u06cc\u200c\u062f\u0648\u0646\u0647 \u06cc\u06a9 Repository \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0631\u0647 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a\u060c \u0630\u062e\u06cc\u0631\u0647\u060c \u062d\u0630\u0641 \u0648 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc \u0628\u06a9\u0646\u0647. ViewModel \u062f\u06cc\u06af\u0647 \u0646\u0645\u06cc\u200c\u062f\u0648\u0646\u0647 \u0627\u06cc\u0646 Repository \u0627\u0632 Room \u0648 Retrofit \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0648 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0645\u06cc\u200c\u062f\u0647. \u0627\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc\u060c \u0627\u0635\u0644 \u0627\u0635\u0644\u06cc Repository Pattern \u062f\u0631 \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> Interface <\/strong><strong>\u0628\u0631\u0627\u06cc<\/strong><strong> Repository<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0631\u0627\u0631\u062f\u0627\u062f Repository \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 \u06cc\u06a9 Interface \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface ContentRepository {\n\n\u00a0\u00a0\u00a0 fun observeArticles():\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Flow&lt;List&lt;ArticleWithAuthor>>\n\n\u00a0\u00a0\u00a0 suspend fun syncFromServer():\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SyncResult\n\n\u00a0\u00a0\u00a0 suspend fun saveLocalArticle(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 articleId: Int?,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 title: String,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 body: String\n\n\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 suspend fun deleteLocalArticle(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 articleId: Int\n\n\u00a0\u00a0\u00a0 )\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ContentRepository<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">observeArticles<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Flow<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">ArticleWithAuthor<\/span><span style=\"color: #D73A49\">&gt;&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">syncFromServer<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SyncResult<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">saveLocalArticle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 articleId: <\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">?,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 title: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 body: <\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">deleteLocalArticle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 articleId: <\/span><span style=\"color: #6F42C1\">Int<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Interface \u0641\u0642\u0637 \u0645\u06cc\u200c\u06af\u0647 Repository \u0628\u0627\u06cc\u062f \u0686\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0627\u0645\u0627 \u062a\u0648\u0636\u06cc\u062d \u0646\u0645\u06cc\u200c\u062f\u0647 \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0686\u0637\u0648\u0631 \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0646. \u0645\u062b\u0644\u0627\u064b \u0645\u06cc\u200c\u06af\u0647 \u0628\u0627\u06cc\u062f \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0648\u0644\u06cc \u0645\u0634\u062e\u0635 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0627\u0632 Room \u0645\u06cc\u0627\u0646\u060c API \u0645\u06cc\u0627\u0646 \u06cc\u0627 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0628\u0647 Interface \u0645\u06cc\u200c\u06af\u06cc\u0645 \u00ab\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u00bb.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Interface <\/strong><strong>\u062e\u0648\u062f\u0634 \u06a9\u062f \u0627\u062c\u0631\u0627\u06cc\u06cc \u0646\u062f\u0627\u0631\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 ContentRepository \u0641\u0642\u0637 \u0646\u0627\u0645 \u062a\u0648\u0627\u0628\u0639\u060c \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0648 \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627 \u0631\u0648 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u06cc\u0645. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun deleteLocalArticle(\n\n\u00a0\u00a0\u00a0 articleId: Int\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">deleteLocalArticle<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 articleId: <\/span><span style=\"color: #6F42C1\">Int<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062f \u0641\u0642\u0637 \u0645\u06cc\u200c\u06af\u0647 \u0647\u0631 Repository \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u0642\u0627\u0644\u0647 \u0631\u0648 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647\u200c\u0627\u0634 \u062d\u0630\u0641 \u0628\u06a9\u0646\u0647. \u0627\u0645\u0627 \u0686\u06af\u0648\u0646\u06af\u06cc \u062d\u0630\u0641 \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 \u0641\u0631\u0642 \u0645\u06cc\u200c\u06a9\u0646\u0647. Repository \u0648\u0627\u0642\u0639\u06cc \u0645\u0642\u0627\u0644\u0647 \u0631\u0648 \u0627\u0632 Room \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0648\u0644\u06cc Fake Repository \u0627\u0648\u0646 \u0631\u0648 \u0627\u0632 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u06a9\u0646\u0627\u0631 \u0645\u06cc\u200c\u0630\u0627\u0631\u0647. Interface \u0639\u0645\u062f\u0627\u064b \u0648\u0627\u0631\u062f \u0627\u06cc\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc<\/strong><strong> Interface <\/strong><strong>\u0628\u0627 <\/strong><strong>: ContentRepository<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 \u0648\u0627\u0642\u0639\u06cc \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class ContentRepositoryImpl(\n\n\u00a0\u00a0\u00a0 private val api: ContentApi,\n\n\u00a0\u00a0\u00a0 private val dao: ContentDao\n\n) : ContentRepository<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ContentRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api: <\/span><span style=\"color: #6F42C1\">ContentApi<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao: <\/span><span style=\"color: #6F42C1\">ContentDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) : <\/span><span style=\"color: #6F42C1\">ContentRepository<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0633\u0645\u062a ContentRepository<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0642\u0631\u0627\u0631\u062f\u0627\u062f ContentRepository \u0631\u0648 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0648 \u0645\u0648\u0638\u0641\u0647 \u062a\u0645\u0627\u0645 \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc \u0627\u0648\u0646 \u0631\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u06a9\u0646\u0647. \u0627\u06af\u0631 \u062d\u062a\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc Interface \u0631\u0648 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0646\u0646\u0648\u06cc\u0633\u06cc\u0645\u060c \u067e\u0631\u0648\u0698\u0647 Build \u0646\u0645\u06cc\u0634\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Interface \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc\u0634\u0647 \u062a\u0645\u0627\u0645 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u06cc\u06a9\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0627\u0633\u0645 \u06a9\u0644\u0627\u0633 \u0648\u0627\u0642\u0639\u06cc <\/strong><strong>ContentRepositoryImpl <\/strong><strong>\u0627\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0645\u0647\u200c\u06cc Impl \u0645\u062e\u0641\u0641 Implementation \u06cc\u0639\u0646\u06cc \u00ab\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u00bb \u0627\u0633\u062a. ContentRepository \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u06a9\u0644\u06cc\u0647 \u0648 ContentRepositoryImpl \u0646\u0633\u062e\u0647 \u0648\u0627\u0642\u0639\u06cc \u0627\u0648\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647 \u06a9\u0647 \u0628\u0647 Retrofit \u0648 Room \u0648\u0635\u0644 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ContentRepositoryImpl<br>\u2193<br>ContentApi<br>+<br>ContentDao<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u0632 \u0631\u0648\u06cc \u0627\u0633\u0645 \u06a9\u0644\u0627\u0633 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0637\u0631\u0641 \u0647\u0633\u062a\u06cc\u0645 \u06cc\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0648\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u0627\u0631\u0628\u0631\u062f <\/strong><strong>override <\/strong><strong>\u062f\u0631<\/strong><strong> Repository<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u062a\u0627\u0628\u0639\u06cc \u0627\u0632 Interface \u0631\u0648 \u062f\u0627\u062e\u0644 \u06a9\u0644\u0627\u0633 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0642\u0628\u0644\u0634 override \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>override suspend fun syncFromServer():\n\n\u00a0\u00a0\u00a0 SyncResult<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">syncFromServer<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 SyncResult<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">override \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0632 \u0642\u0631\u0627\u0631\u062f\u0627\u062f ContentRepository \u0627\u0648\u0645\u062f\u0647 \u0648 \u0645\u0627 \u0627\u0644\u0627\u0646 \u062f\u0627\u0631\u06cc\u0645 \u0646\u0633\u062e\u0647 \u0627\u062c\u0631\u0627\u06cc\u06cc \u0627\u0648\u0646 \u0631\u0648 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0647\u0645 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0628\u0631\u0631\u0633\u06cc \u0628\u06a9\u0646\u0647 \u0646\u0627\u0645 \u062a\u0627\u0628\u0639\u060c \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0648 \u062e\u0631\u0648\u062c\u06cc \u0627\u0648\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0627 Interface \u0647\u0645\u0627\u0647\u0646\u06af \u0628\u0627\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> ViewModel <\/strong><strong>\u0641\u0642\u0637 <\/strong><strong>ContentRepository <\/strong><strong>\u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u0632\u0646\u062f\u0647 ViewModel \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class ContentViewModel(\n\n\u00a0\u00a0\u00a0 private val repository:\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ContentRepository\n\n) : ViewModel()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">ContentViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ContentRepository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) : <\/span><span style=\"color: #6F42C1\">ViewModel<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0646\u0648\u0639 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0648 ContentRepositoryImpl \u0646\u0646\u0648\u0634\u062a\u0647\u200c\u0627\u06cc\u0645\u060c \u0628\u0644\u06a9\u0647 \u062e\u0648\u062f Interface \u06cc\u0639\u0646\u06cc ContentRepository \u0631\u0648 \u0646\u0648\u0634\u062a\u06cc\u0645. \u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 ViewModel \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0627\u0635 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0647. \u0647\u0631 \u06a9\u0644\u0627\u0633\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f ContentRepository \u0631\u0648 \u0631\u0639\u0627\u06cc\u062a \u0628\u06a9\u0646\u0647\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0647 ViewModel \u062f\u0627\u062f\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0647\u0631 \u062f\u0648 \u0645\u0648\u0631\u062f \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc ViewModel \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u0647\u0633\u062a\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">ContentRepositoryImpl(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">FakeContentRepository()<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0628\u0647\u200c\u062c\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">ViewModel \u0641\u0642\u0637 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0631\u0648 \u0645\u06cc\u200c\u0634\u0646\u0627\u0633\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">repository.observeArticles()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">repository.syncFromServer()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">repository.saveLocalArticle(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">repository.deleteLocalArticle(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0627\u0632 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u062a\u0648\u0627\u0628\u0639 \u062e\u0628\u0631 \u0646\u062f\u0627\u0631\u0647. \u0645\u062b\u0644\u0627\u064b \u0646\u0645\u06cc\u200c\u062f\u0648\u0646\u0647 syncFromServer() \u0628\u0627 Retrofit \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647 \u06cc\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u062a\u06cc\u062c\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647. \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc ViewModel \u0628\u0647 \u00ab\u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u00bb \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u060c \u0646\u0647 \u0628\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0646\u200c\u0647\u0627.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u06a9\u062f<\/strong><strong> ViewModel <\/strong><strong>\u0628\u0627 \u0639\u0648\u0636 \u0634\u062f\u0646 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062d\u0627\u0644\u062a \u0648\u0627\u0642\u0639\u06cc\u060c \u0627\u06cc\u0646 \u062e\u0637:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">repository.observeArticles()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0645\u06cc\u200c\u0631\u0633\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ContentRepositoryImpl<br>\u2193<br>ContentDao<br>\u2193<br>Room<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a Fake\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u06cc\u0646 \u062e\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0645\u06cc\u200c\u0631\u0633\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">FakeContentRepository<br>\u2193<br>MutableStateFlow<br>\u2193<br>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0647\u0631 \u062f\u0648 Repository \u062e\u0631\u0648\u062c\u06cc \u06cc\u06a9\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u060c ViewModel \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0628\u0641\u0647\u0645\u0647 \u06a9\u062f\u0648\u0645 \u06cc\u06a9\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0648\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0628\u0639\u062f\u0647\u0627 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0631\u0648 \u0639\u0648\u0636 \u06a9\u0646\u06cc\u0645\u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 ViewModel \u0631\u0648 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Fake Repository <\/strong><strong>\u0686\u06cc\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">FakeContentRepository \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0627\u0632 \u0642\u0631\u0627\u0631\u062f\u0627\u062f Repository \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class FakeContentRepository :\n\n\u00a0\u00a0\u00a0 ContentRepository<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">FakeContentRepository<\/span><span style=\"color: #24292E\"> :<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentRepository<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0628\u0647 Room\u060c Retrofit\u060c \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0645\u062a\u0635\u0644 \u0646\u06cc\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0648 \u062e\u0648\u062f\u0634 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647 \u0648 \u0647\u0645\u0648\u0646 \u062a\u0648\u0627\u0628\u0639 Repository \u0648\u0627\u0642\u0639\u06cc \u0631\u0648 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0631\u0641\u062a\u0627\u0631 ViewModel \u0648 UI \u0631\u0648 \u0628\u062f\u0648\u0646 \u0622\u0645\u0627\u062f\u0647 \u0628\u0648\u062f\u0646 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648\u0627\u0642\u0639\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0641\u0631\u0642<\/strong><strong> Fake Repository <\/strong><strong>\u0628\u0627 \u062f\u0627\u062f\u0647<\/strong><strong> Hardcode <\/strong><strong>\u0634\u062f\u0647 \u062f\u0627\u062e\u0644<\/strong><strong> UI<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0627\u062e\u0644 ContentScreen \u06cc\u0627 ViewModel \u0642\u0631\u0627\u0631 \u0646\u062f\u0627\u062f\u06cc\u0645. \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 Repository \u062c\u062f\u0627 \u06af\u0630\u0627\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">FakeContentRepository<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 UI \u0648 ViewModel \u0647\u0645\u0686\u0646\u0627\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u0646. \u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0639\u0648\u0636 \u0634\u062f\u0647 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0648 \u062f\u0627\u062e\u0644 UI \u0645\u06cc\u200c\u06af\u0630\u0627\u0634\u062a\u06cc\u0645\u060c \u062f\u06cc\u06af\u0647 Repository Pattern \u0631\u0648 \u0648\u0627\u0642\u0639\u0627\u064b \u0622\u0632\u0645\u0627\u06cc\u0634 \u0646\u06a9\u0631\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/strong><strong> Fake <\/strong><strong>\u0628\u0627 <\/strong><strong>MutableStateFlow<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Fake Repository \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val fakeArticles =\n\n\u00a0\u00a0\u00a0 MutableStateFlow(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 listOf(...)\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> fakeArticles <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">MutableStateFlow<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 Repository \u0648\u0627\u0642\u0639\u06cc \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 Flow \u0627\u0632 Room \u0645\u06cc\u200c\u062f\u0647\u060c Fake Repository \u0647\u0645 \u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. MutableStateFlow \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0647\u0631 \u0648\u0642\u062a \u0645\u0642\u0627\u0644\u0647\u200c\u0627\u06cc \u0627\u0636\u0627\u0641\u0647\u060c \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06cc\u0627 \u062d\u0630\u0641 \u0634\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u062c\u062f\u06cc\u062f \u0631\u0648 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 ViewModel \u0648 Compose \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u062b\u0644 \u062d\u0627\u0644\u062a Room \u0628\u0647\u200c\u0631\u0648\u0632 \u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Fake Repository <\/strong><strong>\u0627\u0632 <\/strong><strong>asStateFlow <\/strong><strong>\u062e\u0631\u0648\u062c\u06cc \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u062a\u0627\u0628\u0639 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>override fun observeArticles():\n\n\u00a0\u00a0\u00a0 Flow&lt;List&lt;ArticleWithAuthor>> {\n\n\u00a0\u00a0\u00a0 return fakeArticles\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .asStateFlow()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">observeArticles<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">Flow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">ArticleWithAuthor<\/span><span style=\"color: #24292E\">&gt;&gt; {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> fakeArticles<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">asStateFlow<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f fakeArticles \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0647 \u0648 \u0641\u0642\u0637 Fake Repository \u0628\u0627\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0634 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0628\u06cc\u0631\u0648\u0646 \u06a9\u0644\u0627\u0633 \u0641\u0642\u0637 \u0646\u0633\u062e\u0647 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0648\u0646 \u062a\u062d\u0648\u06cc\u0644 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 ViewModel \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0644\u06cc\u0633\u062a \u062f\u0627\u062e\u0644\u06cc Repository \u0631\u0648 \u0639\u0648\u0636 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062a\u063a\u06cc\u0631 <\/strong><strong>nextId<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 Fake Repository \u0628\u0647 SQLite \u0648\u0635\u0644 \u0646\u06cc\u0633\u062a\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647 \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u0645\u0642\u0627\u0644\u0647 \u062c\u062f\u06cc\u062f \u0631\u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0633\u0627\u0632\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u06cc\u06a9 \u0634\u0645\u0627\u0631\u0646\u062f\u0647 \u0633\u0627\u062f\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">private var nextId = 1003<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0645\u0642\u0627\u0644\u0647 \u062c\u062f\u06cc\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u0641\u0639\u0644\u06cc \u0628\u0647 \u0645\u0642\u0627\u0644\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0639\u062f \u06cc\u06a9\u06cc \u0632\u06cc\u0627\u062f \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">id = nextId<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">nextId++<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0641\u0642\u0637 \u0646\u0642\u0634 autoGenerate \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0634\u0628\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0627\u0628\u062a\u062f\u0627\u06cc \u0644\u06cc\u0633\u062a<\/strong><strong> Fake<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0645\u0642\u0627\u0644\u0647 \u062c\u062f\u06cc\u062f \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fakeArticles.value =\n\n\u00a0\u00a0\u00a0 listOf(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 newArticle\n\n\u00a0\u00a0\u00a0 ) +\n\n\u00a0\u00a0\u00a0 fakeArticles.value<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">fakeArticles.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 newArticle<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ) <\/span><span style=\"color: #D73A49\">+<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 fakeArticles.<\/span><span style=\"color: #D73A49\">value<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062a\u0627\u0632\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0645\u0642\u0627\u0644\u0647 \u062c\u062f\u06cc\u062f \u0627\u0648\u0644\u06cc\u0646 \u0639\u0636\u0648 \u0627\u0648\u0646\u0647 \u0648 \u0628\u0639\u062f \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0645\u0642\u0627\u0644\u0647 \u062c\u062f\u06cc\u062f \u0628\u0627\u0644\u0627\u06cc \u0644\u06cc\u0633\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627 \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f\u060c StateFlow \u0645\u062a\u0648\u062c\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u0634\u0647 \u0648 \u0645\u0642\u062f\u0627\u0631 \u062a\u0627\u0632\u0647 \u0631\u0648 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/strong><strong> Fake <\/strong><strong>\u0628\u0627 <\/strong><strong>map<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06cc\u06a9 \u0645\u0642\u0627\u0644\u0647 \u062f\u0627\u062e\u0644 Fake Repository \u0627\u0632 map \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fakeArticles.value =\n\n\u00a0\u00a0\u00a0 fakeArticles.value.map { article ->\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.id == articleId &amp;&amp;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.isLocal\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.copy(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 title = title,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 body = body,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 updatedAt = currentTime\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">fakeArticles.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 fakeArticles.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> { article <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.id <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> articleId <\/span><span style=\"color: #D73A49\">&amp;&amp;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.isLocal<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.<\/span><span style=\"color: #6F42C1\">copy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 title <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> title,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 body <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> body,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 updatedAt <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> currentTime<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">map \u062a\u0645\u0627\u0645 \u0627\u0639\u0636\u0627\u06cc \u0644\u06cc\u0633\u062a \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 \u0634\u0646\u0627\u0633\u0647 \u0645\u0642\u0627\u0644\u0647 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u0627\u0634\u0647\u060c \u0646\u0633\u062e\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634\u200c\u0634\u062f\u0647 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647\u061b \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0647\u0645\u0627\u0646 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u062e\u0631\u0648\u062c\u06cc map \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0639\u062f \u062f\u0627\u062e\u0644 StateFlow \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062d\u0630\u0641 \u0627\u0637\u0644\u0627\u0639\u0627\u062a<\/strong><strong> Fake <\/strong><strong>\u0628\u0627 <\/strong><strong>filterNot<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0645\u0642\u0627\u0644\u0647 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fakeArticles.value =\n\n\u00a0\u00a0\u00a0 fakeArticles.value.filterNot { article ->\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.id == articleId &amp;&amp;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.isLocal\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">fakeArticles.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 fakeArticles.<\/span><span style=\"color: #D73A49\">value<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">filterNot<\/span><span style=\"color: #24292E\"> { article <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.id <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> articleId <\/span><span style=\"color: #D73A49\">&amp;&amp;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 article.isLocal<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">filterNot \u0627\u0639\u0636\u0627\u06cc\u06cc \u0631\u0648 \u06a9\u0647 \u0634\u0631\u0637 \u062f\u0627\u062e\u0644\u0634\u0648\u0646 true \u0628\u0627\u0634\u0647 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u06a9\u0646\u0627\u0631 \u0645\u06cc\u200c\u0630\u0627\u0631\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0634\u0646\u0627\u0633\u0647 \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0631\u0648 \u062f\u0627\u0631\u0647 \u062d\u0630\u0641 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0642\u06cc\u0647 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627 \u062f\u0627\u062e\u0644 \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Fake Repository <\/strong><strong>\u0628\u0639\u062f \u0627\u0632 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0637\u0644\u0627\u0639\u0627\u062a Fake \u0641\u0642\u0637 \u062f\u0627\u062e\u0644 MutableStateFlow \u0648 \u062d\u0627\u0641\u0638\u0647 \u0645\u0648\u0642\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u0646. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u0631\u0646. \u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631 \u0637\u0628\u06cc\u0639\u06cc\u0647\u060c \u0686\u0648\u0646 Fake Repository \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u062c\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0627\u0626\u0645\u06cc \u0631\u0648 \u0628\u06af\u06cc\u0631\u0647\u061b \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0648 \u062a\u0645\u0631\u06cc\u0646 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0645\u0642\u0627\u0628\u0644\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a ContentRepositoryImpl \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0646 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0631\u0641\u062a\u0627\u0631 <\/strong><strong>syncFromServer <\/strong><strong>\u062f\u0631<\/strong><strong> Fake Repository<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Fake Repository \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>override suspend fun syncFromServer():\n\n\u00a0\u00a0\u00a0 SyncResult {\n\n\u00a0\u00a0\u00a0 return SyncResult.Success\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">override<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">syncFromServer<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">SyncResult<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> SyncResult.Success<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Fake Repository \u0627\u0635\u0644\u0627\u064b \u0628\u0647 \u0633\u0631\u0648\u0631 \u0648\u0635\u0644 \u0646\u0645\u06cc\u0634\u0647\u060c \u0627\u0645\u0627 \u0686\u0648\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f ContentRepository \u062a\u0627\u0628\u0639 syncFromServer() \u0631\u0648 \u0627\u0644\u0632\u0627\u0645\u06cc \u06a9\u0631\u062f\u0647\u060c \u0628\u0627\u06cc\u062f \u0627\u0648\u0646 \u0631\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u06a9\u0646\u0647. \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0641\u0642\u0637 \u0646\u062a\u06cc\u062c\u0647 \u0645\u0648\u0641\u0642 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647 \u062a\u0627 ViewModel \u0647\u0645\u0648\u0646 \u062c\u0631\u06cc\u0627\u0646 \u0645\u0639\u0645\u0648\u0644 \u0631\u0648 \u0627\u062f\u0627\u0645\u0647 \u0628\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u062f\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 \u0645\u0645\u06a9\u0646\u0647 \u0631\u0641\u062a\u0627\u0631 \u062f\u0627\u062e\u0644\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u060c \u0648\u0644\u06cc \u0634\u06a9\u0644 \u0627\u0631\u062a\u0628\u0627\u0637\u0634\u0648\u0646 \u0628\u0627 ViewModel \u0628\u0627\u06cc\u062f \u0628\u0627 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0647\u0645\u0627\u0647\u0646\u06af \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0646\u062a\u062e\u0627\u0628<\/strong><strong> Repository <\/strong><strong>\u0648\u0627\u0642\u0639\u06cc \u06cc\u0627<\/strong><strong> Fake<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 MainActivity \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0633\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private const val USE_FAKE_REPOSITORY =\n\n\u00a0\u00a0\u00a0 false<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">const<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> USE_FAKE_REPOSITORY <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">false<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0642\u062f\u0627\u0631 false \u0628\u0627\u0634\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 Room \u0648 API \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 true \u0628\u0627\u0634\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 Fake Repository \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0631\u0648 \u0628\u0627 \u06cc\u06a9 \u062e\u0637 \u0628\u0628\u06cc\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>const val <\/strong><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u062f\u0627\u0631 USE_FAKE_REPOSITORY \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0645\u0634\u062e\u0635\u0647 \u0648 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0648\u0646 \u0631\u0648 \u0628\u0627 const val \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private const val USE_FAKE_REPOSITORY =\n\n\u00a0\u00a0\u00a0 false<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">const<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> USE_FAKE_REPOSITORY <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #005CC5\">false<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">const \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u06cc\u06a9 \u062b\u0627\u0628\u062a \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u0633\u062a. private \u0647\u0645 \u06cc\u0639\u0646\u06cc \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0627\u0632 \u0627\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0646\u0648\u0639 \u0645\u062a\u063a\u06cc\u0631<\/strong><strong> Repository <\/strong><strong>\u0631\u0627 \u0635\u0631\u06cc\u062d \u0646\u0648\u0634\u062a\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 MainActivity \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val repository:\n\n\u00a0\u00a0\u00a0 ContentRepository =<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentRepository <\/span><span style=\"color: #D73A49\">=<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0646\u0648\u0639 \u0635\u0631\u06cc\u062d \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645\u0647. \u0686\u0648\u0646 \u06cc\u06a9 \u0634\u0627\u062e\u0647 if \u0645\u0642\u062f\u0627\u0631 FakeContentRepository \u0645\u06cc\u200c\u062f\u0647 \u0648 \u0634\u0627\u062e\u0647 \u062f\u06cc\u06af\u0647 ContentRepositoryImpl \u0645\u06cc\u200c\u0633\u0627\u0632\u0647. \u0647\u0631 \u062f\u0648 \u06a9\u0644\u0627\u0633 \u0645\u062a\u0641\u0627\u0648\u062a\u0646\u060c \u0627\u0645\u0627 \u0647\u0631 \u062f\u0648 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0645\u0634\u062a\u0631\u06a9 ContentRepository \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0628\u0627 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0645\u06cc\u200c\u06af\u06cc\u0645 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u06a9\u0644\u0627\u0633 \u0648\u0627\u0642\u0639\u06cc Repository \u0686\u06cc\u0633\u062a. \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f ContentRepository \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0646\u062a\u062e\u0627\u0628 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u0627 <\/strong><strong>if<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Repository \u0631\u0648 \u0627\u06cc\u0646\u200c\u0637\u0648\u0631\u06cc \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val repository:\n\n\u00a0\u00a0\u00a0 ContentRepository =\n\n\u00a0\u00a0\u00a0 if (\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 USE_FAKE_REPOSITORY\n\n\u00a0\u00a0\u00a0 ) {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FakeContentRepository()\n\n\u00a0\u00a0\u00a0 } else {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ContentRepositoryImpl(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 api = RoomNetwork.api,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dao = database.contentDao()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentRepository <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> (<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 USE_FAKE_REPOSITORY<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">FakeContentRepository<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 } <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">ContentRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 api <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> RoomNetwork.api,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dao <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> database.<\/span><span style=\"color: #6F42C1\">contentDao<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646 if \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647. \u0627\u06af\u0631 \u062d\u0627\u0644\u062a Fake \u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u0647\u060c \u0646\u0645\u0648\u0646\u0647 Fake \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647 \u0648 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a Repository \u0648\u0627\u0642\u0639\u06cc \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647. \u0647\u0631 \u06a9\u062f\u0648\u0645 \u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u0634\u0647\u060c \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u062f\u0627\u062e\u0644 \u0645\u062a\u063a\u06cc\u0631\u06cc \u0627\u0632 \u0646\u0648\u0639 ContentRepository \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Factory <\/strong><strong>\u0647\u0645 \u0641\u0642\u0637<\/strong><strong> Interface <\/strong><strong>\u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Factory \u0627\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val repository:\n\n\u00a0\u00a0\u00a0 ContentRepository<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentRepository<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Factory \u0647\u0645 \u0628\u0647 Repository \u0648\u0627\u0642\u0639\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a. \u0647\u0631 Repository\u0627\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0631\u0648 \u0631\u0639\u0627\u06cc\u062a \u0628\u06a9\u0646\u0647\u060c \u0648\u0627\u0631\u062f Factory \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0639\u062f \u0628\u0647 ViewModel \u062a\u062d\u0648\u06cc\u0644 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">MainActivity<br>\u2193<br>Repository \u0648\u0627\u0642\u0639\u06cc \u06cc\u0627 Fake<br>\u2193<br>ContentViewModelFactory<br>\u2193<br>ContentViewModel<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Dependency Injection <\/strong><strong>\u0633\u0627\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Repository \u0631\u0648 \u0628\u06cc\u0631\u0648\u0646 ViewModel \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u0628\u0647 \u0627\u0648\u0646 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ContentViewModel(\n\n\u00a0\u00a0\u00a0 repository = repository\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">ContentViewModel<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 repository <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> repository<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0648\u0627\u0642\u0639 \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0634\u06a9\u0644 \u0633\u0627\u062f\u0647 \u0627\u0632 Dependency Injection \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u06cc\u0639\u0646\u06cc ViewModel \u062e\u0648\u062f\u0634 \u0646\u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val repository =\n\n\u00a0\u00a0\u00a0 ContentRepositoryImpl(...)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">ContentRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u06a9\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632\u0634 \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 \u0628\u0647 \u0627\u0648\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u0647\u0645\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0627\u0645\u06a9\u0627\u0646 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 Repository \u0648\u0627\u0642\u0639\u06cc \u06cc\u0627 Fake \u0631\u0648 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0633\u0627\u062e\u062a<\/strong><strong> Repository <\/strong><strong>\u062f\u0627\u062e\u0644<\/strong><strong> ViewModel <\/strong><strong>\u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0648\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 ViewModel \u062e\u0648\u062f\u0634 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0648 \u0645\u06cc\u200c\u0646\u0648\u0634\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private val repository =\n\n\u00a0\u00a0\u00a0 ContentRepositoryImpl(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 api = ...,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dao = ...\n\n\u00a0\u00a0\u00a0 )<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> repository <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">ContentRepositoryImpl<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 api <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dao <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 )<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u06cc\u06af\u0647 ViewModel \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 Room \u0648 Retrofit \u0648\u0627\u0628\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u062f \u0648 \u0627\u0645\u06a9\u0627\u0646 \u0641\u0631\u0633\u062a\u0627\u062f\u0646 FakeContentRepository \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a ViewModel \u0645\u062c\u0628\u0648\u0631 \u0628\u0648\u062f\u06cc\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0634\u0628\u06a9\u0647 \u0648\u0627\u0642\u0639\u06cc \u0631\u0648 \u0647\u0645 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u067e\u0633 Repository \u0628\u0627\u06cc\u062f \u0628\u06cc\u0631\u0648\u0646 \u0633\u0627\u062e\u062a\u0647 \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u0648\u0627\u0631\u062f ViewModel \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0648\u0627\u0642\u0639\u06cc \u067e\u0634\u062a<\/strong><strong> Repository<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c Repository \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u062f\u0648 \u0645\u0646\u0628\u0639 \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Remote Data Source\n\n= ContentApi\n\nLocal Data Source\n\n= ContentDao<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">Remote Data Source<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> ContentApi<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">Local Data Source<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> ContentDao<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 syncFromServer() \u0627\u0632 API \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647 \u0648 \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 DAO \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062a\u0627\u0628\u0639 observeArticles() \u0647\u0645 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0648 \u0627\u0632 DAO \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647. ViewModel \u0641\u0642\u0637 Repository \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u0647 \u0648 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0641\u062a\u200c\u0648\u0622\u0645\u062f \u062f\u0627\u062e\u0644\u06cc \u0627\u0637\u0644\u0627\u0639\u06cc \u0646\u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Repository <\/strong><strong>\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u062d\u0644 \u062a\u0635\u0645\u06cc\u0645\u200c\u06af\u06cc\u0631\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 Repository \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u0645\u0627\u06cc\u0634 \u0645\u0642\u0627\u0644\u0647\u200c\u0647\u0627<\/strong><br>\u2190 \u0627\u0632 Room<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0627\u0632\u0647<\/strong><br>\u2190 \u0627\u0632 API<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0630\u062e\u06cc\u0631\u0647 \u0646\u0633\u062e\u0647 \u062a\u0627\u0632\u0647<\/strong><br>\u2190 \u062f\u0627\u062e\u0644 Room<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0641\u0632\u0648\u062f\u0646 \u0648 \u062d\u0630\u0641 \u0645\u062d\u0644\u06cc<\/strong><br>\u2190 \u0627\u0632 \u0637\u0631\u06cc\u0642 DAO<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645\u200c\u0647\u0627 \u0646\u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 ViewModel \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646. ViewModel \u0641\u0642\u0637 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 Repository \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u0648\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u062f\u0648\u0645 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u06a9\u0627\u0631 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> UI <\/strong><strong>\u0647\u0645 \u0628\u0627 \u0639\u0648\u0636 \u0634\u062f\u0646<\/strong><strong> Repository <\/strong><strong>\u062a\u063a\u06cc\u06cc\u0631 \u0646\u06a9\u0631\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">ContentScreen \u0641\u0642\u0637 State \u0633\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 ViewModel \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u0648\u0646 \u0646\u0647 ContentRepositoryImpl \u0631\u0648 \u0645\u06cc\u200c\u0634\u0646\u0627\u0633\u0647 \u0648 \u0646\u0647 FakeContentRepository \u0631\u0648. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0639\u0648\u0636 \u0634\u062f\u0646 Repository \u0647\u06cc\u0686 \u0627\u062b\u0631\u06cc \u0631\u0648\u06cc \u06a9\u062f UI \u0646\u062f\u0627\u0631\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Repository \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<br>\u2193<br>ViewModel \u0647\u0645\u0627\u0646 \u0627\u0633\u062a<br>\u2193<br>State \u0647\u0645\u0627\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u0627 \u062f\u0627\u0631\u062f<br>\u2193<br>Compose \u0647\u0645\u0627\u0646 \u0627\u0633\u062a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u062f\u0647 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc Repository \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u0631\u062a\u0628 \u0634\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0646\u06cc\u0633\u062a\u061b \u0648\u0627\u0642\u0639\u0627\u064b \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0628\u062e\u0634 \u062f\u0627\u062f\u0647 \u0631\u0648 \u0628\u062f\u0648\u0646 \u062f\u0633\u062a\u200c\u06a9\u0627\u0631\u06cc ViewModel \u0648 UI \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u062f\u0631\u0633 \u06f1\u06f6<br>Cache \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0622\u0641\u0644\u0627\u06cc\u0646<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645 \u0686\u0637\u0648\u0631:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0632 API \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06af\u06cc\u0631\u06cc\u0645<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645<\/li>\n\n\n\n<li>\u0628\u0627 Repository \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0631\u0627 \u062c\u062f\u0627 \u06a9\u0646\u06cc\u0645<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0645\u0627 \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0645\u0647\u0645 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647:<\/strong><br>\u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0686\u0647\u061f \u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u0635\u0628\u062d \u0628\u0627 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062e\u0628\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>id=\"9q2x7m\"\nAPI\n\n\u2193\n\n\u0644\u06cc\u0633\u062a \u0627\u062e\u0628\u0627\u0631\n\n\u2193\n\nRoom\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0639\u0635\u0631 \u062f\u0627\u062e\u0644 \u0645\u062a\u0631\u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u062f\u0627\u0631\u062f. \u0622\u06cc\u0627 \u0628\u0627\u06cc\u062f \u0635\u0641\u062d\u0647 \u062e\u0627\u0644\u06cc \u0628\u0628\u06cc\u0646\u062f\u061f \u0646\u0647. \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0622\u062e\u0631\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647\u200c\u0627\u0646\u062f \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627 \u0645\u0641\u0647\u0648\u0645 Cache \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cache \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cache \u06cc\u0639\u0646\u06cc \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u06cc\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u0628\u0648\u062f \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc. \u0645\u062b\u0644\u0627\u064b \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0635\u0644\u06cc Server \u0648 \u0646\u0633\u062e\u0647 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 Cache.<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>API\n\n\u2193\n\nCache\n\n\u2193\n\nUI\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Database\n\n\u2193\n\nUI\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0686\u0631\u0627 Cache \u0645\u0647\u0645 \u0627\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0648\u0646 Cache:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\n\n\u2193\n\n\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\n\n\u2193\n\n\u0635\u0628\u0631 \u06a9\u0627\u0631\u0628\u0631\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0628\u0627\u0631 \u0628\u0627\u06cc\u062f \u0645\u0646\u062a\u0638\u0631 \u0628\u0645\u0627\u0646\u06cc\u0645. \u0627\u0645\u0627 \u0628\u0627 Cache:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647<br>\u2193<br>\u0646\u0645\u0627\u06cc\u0634 \u0633\u0631\u06cc\u0639 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc<br>\u2193<br>\u0622\u067e\u062f\u06cc\u062a \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0646\u0648\u0627\u0639 Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0633\u0647 \u0646\u0648\u0639 Cache \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u06f1. Memory Cache<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">\u06f2. Disk Cache<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">\u06f3. Network Cache<\/h4>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Memory Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Memory Cache \u06cc\u0639\u0646\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 RAM \u06af\u0648\u0634\u06cc. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var newsList = listOf&lt;News>()\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> newsList <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">listOf<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">News<\/span><span style=\"color: #24292E\">&gt;()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0632 \u0627\u0633\u062a\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u06a9\u0627\u0631\u0628\u0631 \u0635\u0641\u062d\u0647 \u0627\u062e\u0628\u0627\u0631 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0648\u0644:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">API<br>\u2193<br>newsList<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062f\u0647 \u062f\u0627\u062e\u0644 RAM \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0648\u0642\u062a\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u0647\u0645\u0627\u0646 \u0635\u0641\u062d\u0647 \u0628\u0627\u0632 \u0634\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Memory<br>\u2193<br>UI<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0632\u06cc\u062a Memory Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u06cc\u0644\u06cc \u0633\u0631\u06cc\u0639 \u0627\u0633\u062a. \u0686\u0648\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">RAM<br>&gt;<br>Storage<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0639\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644 Memory Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Close App<br>\u2193<br>RAM \u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u0648\u062f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Disk Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Disk Cache \u06cc\u0639\u0646\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648\u06cc \u062d\u0627\u0641\u0638\u0647 \u06af\u0648\u0634\u06cc. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Room<\/li>\n\n\n\n<li>SQLite<\/li>\n\n\n\n<li>\u0641\u0627\u06cc\u0644<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0645\u0639\u0645\u0648\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>SQLite<br>\u2193<br>Phone Storage<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">\u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u0627\u062e\u0628\u0627\u0631\u060c \u062f\u0627\u062f\u0647 \u0627\u0632 API:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n {\n  \"title\":\"Android 16 Released\"\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;title&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;Android 16 Released&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0639\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Room\n\n\u2193\n\nNews List\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u0645\u0642\u0627\u06cc\u0633\u0647 Memory \u0648 Disk Cache<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">Memory Cache<\/th><th class=\"has-text-align-center\" data-align=\"center\">Disk Cache<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0633\u0631\u06cc\u0639\u200c\u062a\u0631<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u06a9\u0646\u062f\u062a\u0631<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0645\u0648\u0642\u062a<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u062f\u0627\u0626\u0645\u06cc<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u062f\u0627\u062e\u0644 RAM<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u06af\u0648\u0634\u06cc<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u0628\u0627 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u0648\u062f<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a \u067e\u0631\u0648\u0698\u0647 \u0627\u062e\u0628\u0627\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062f\u0644 \u062e\u0628\u0631:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class News(\n\n    val id:Int,\n\n    val title:String,\n\n    val description:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">News<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> title:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> description:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Entity \u0628\u0631\u0627\u06cc Room<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 Cache \u062f\u0627\u0626\u0645\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Entity(\n    tableName = \"news\"\n)\ndata class NewsEntity(\n\n    @PrimaryKey\n    val id:Int,\n\n    val title:String,\n\n    val description:String\n\n)\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Entity<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    tableName <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;news&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NewsEntity<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">@PrimaryKey<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> id:<\/span><span style=\"color: #6F42C1\">Int<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> title:<\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> description:<\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0645\u062a \u0633\u0631\u0648\u0631 news.php. \u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&#91;\n {\n  \"id\":1,\n  \"title\":\"New Android Version\"\n }\n&#93;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">&#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;id&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #6F42C1\">1<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">  <\/span><span style=\"color: #032F62\">&quot;title&quot;<\/span><span style=\"color: #24292E\">:<\/span><span style=\"color: #032F62\">&quot;New Android Version&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">&#93;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Retrofit:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>interface NewsApi {\n\n\n    @GET(\"news.php\")\n    suspend fun getNews():\n\n    List&lt;News>\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">interface<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NewsApi<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #6F42C1\">@GET<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #032F62\">&quot;news.php&quot;<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">News<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Repository \u0628\u0627 Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 Repository \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0646\u0642\u0634 \u0631\u0627 \u062f\u0627\u0631\u062f. \u0633\u0627\u062e\u062a\u0627\u0631:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">ViewModel<br>\u2193<br>Repository<br>\u2193<br>&#8212;&#8212;&#8212;&#8212;&#8212;-<br><br>API<br>Room<br>&#8212;&#8212;&#8212;&#8212;&#8212;-<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0631\u0648\u0634 \u0627\u0648\u0644: Network First<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0648\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Request<br>\u2193<br>Network<br>\u2193<br>Success\u061f<br>\u2193<br>Save Cache<br>\u2193<br>Show Data<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0633\u0627\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NewsRepository(\n\nprivate val api:NewsApi,\n\nprivate val dao:NewsDao\n\n){\n\n\nsuspend fun getNews()\n{\n\n\nval news =\napi.getNews()\n\n\ndao.deleteAll()\n\n\ndao.insertAll(news)\n\n\n\n}\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NewsRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api:<\/span><span style=\"color: #6F42C1\">NewsApi<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao:<\/span><span style=\"color: #6F42C1\">NewsDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> news <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">api.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">deleteAll<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">insertAll<\/span><span style=\"color: #24292E\">(news)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc\u060c \u0627\u0648\u0644 API \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646. \u0628\u0639\u062f Room \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632 \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0628\u0627\u0634\u062f\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u06cc\u0645. \u067e\u0633:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>try {\n\n    api.getNews()\n\n}\n\ncatch(e:Exception){\n\n    dao.getNews()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">try<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    api.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    dao.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062c\u0648\u0627\u0628 \u0646\u062f\u0627\u062f\u060c \u0627\u0632 Cache \u0628\u062e\u0648\u0627\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Network First \u06a9\u0627\u0645\u0644\u200c\u062a\u0631<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun getNews():\n\nList&lt;News>{\n\n\nreturn try {\n\n\n    val remote =\n    api.getNews()\n\n\n    dao.insertAll(\n        remote\n    )\n\n\n    remote\n\n\n}\n\ncatch(e:Exception){\n\n\n    dao.getNews()\n\n\n}\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">News<\/span><span style=\"color: #24292E\">&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">try<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> remote <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    api.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    dao.<\/span><span style=\"color: #6F42C1\">insertAll<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        remote<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    remote<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">catch<\/span><span style=\"color: #24292E\">(e:<\/span><span style=\"color: #6F42C1\">Exception<\/span><span style=\"color: #24292E\">){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    dao.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\"><strong>Internet \u0645\u0648\u062c\u0648\u062f<\/strong><br>\u2193<br>API<br>\u2193<br>Save Room<br>\u2193<br>Show<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\"><br><strong>Internet \u0642\u0637\u0639<\/strong><br>\u2193<br>Room<br>\u2193<br>how<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0631\u0648\u0634 \u062f\u0648\u0645: Cache First<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0648\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0646\u06af\u0627\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u062c\u0631\u06cc\u0627\u0646:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>Data \u0645\u0648\u062c\u0648\u062f\u061f<br>\u2193<br>Show<br>\u2193<br>Update From API<br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0648\u0644 \u0622\u062e\u0631\u06cc\u0646 \u0627\u062e\u0628\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0639\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">API<br>\u2193<br>\u0627\u062e\u0628\u0627\u0631 \u062c\u062f\u06cc\u062f<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u0622\u06cc\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>fun getNews():\n\nFlow&lt;List&lt;News>>{\n\nreturn dao.getNews()\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Flow<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">News<\/span><span style=\"color: #24292E\">&gt;&gt;{<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> dao.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">UI \u0633\u0631\u06cc\u0639 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>suspend fun refresh(){\n\n\nval remote =\napi.getNews()\n\n\ndao.insertAll(\nremote\n)\n\n\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">refresh<\/span><span style=\"color: #24292E\">(){<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> remote <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">api.<\/span><span style=\"color: #6F42C1\">getNews<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">insertAll<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">remote<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0642\u0627\u06cc\u0633\u0647 Network First \u0648 Cache First<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Network First<\/h3>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Internet<br>\u2193<br>Cache<br>\u2193<br>UI<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0645\u0632\u06cc\u062a:<\/strong> \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u062f\u06cc\u062f\u062a\u0631.<br><strong>\u0639\u06cc\u0628:<\/strong> \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0646\u062f\u062a\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cache First<\/h2>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Cache<br>\u2193<br>UI<br>\u2193<br>Network Update<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0645\u0632\u06cc\u062a:<\/strong> \u062e\u06cc\u0644\u06cc \u0633\u0631\u06cc\u0639.<br><strong>\u0639\u06cc\u0628:<\/strong> \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0686\u0646\u062f \u0644\u062d\u0638\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u062f\u06cc\u0645\u06cc \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u06a9\u062f\u0627\u0645 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0646\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0627\u062e\u0628\u0627\u0631<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Cache First\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u062a\u0631 \u0627\u0633\u062a. \u0686\u0648\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0633\u0631\u06cc\u0639 \u0628\u0627\u06cc\u062f \u0645\u062d\u062a\u0648\u0627 \u0631\u0627 \u0628\u0628\u06cc\u0646\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0642\u06cc\u0645\u062a \u0627\u0631\u0632<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Network First\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0628\u0647\u062a\u0631 \u0627\u0633\u062a. \u0686\u0648\u0646 \u0642\u06cc\u0645\u062a \u062c\u062f\u06cc\u062f \u0645\u0647\u0645 \u0627\u0633\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0631\u06a9\u06cc\u0628\u06cc:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Memory<br>+<br>Room<br>+<br>Network<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Compose\n\n\u2193\n\nViewModel\n\n\u2193\n\nRepository\n\n\u2193\n\n----------------\n\nRemote API\n\nLocal Room\n\nMemory Cache\n\n----------------\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0648\u0627\u0642\u0639\u06cc \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u0635\u0641\u062d\u0647 \u0642\u06cc\u0645\u062a \u062f\u0644\u0627\u0631\u060c \u06a9\u0627\u0631\u0628\u0631 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u0631\u062d\u0644\u0647 \u0627\u0648\u0644:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>\u0622\u062e\u0631\u06cc\u0646 \u0642\u06cc\u0645\u062a \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647<br>\u2193<br>\u0646\u0645\u0627\u06cc\u0634 \u0641\u0648\u0631\u06cc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">API<br>\u2193<br>\u0642\u06cc\u0645\u062a \u062c\u062f\u06cc\u062f<br>\u2193<br>Update Room<br>\u2193<br>Update UI<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u0628\u0648\u062f:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>\u0622\u062e\u0631\u06cc\u0646 \u0642\u06cc\u0645\u062a \u0645\u0648\u062c\u0648\u062f<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 Room \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0627\u062e\u0628\u0627\u0631 \u0627\u0633\u062a\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u062d\u062a\u06cc \u0648\u0642\u062a\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0646\u060c \u0644\u06cc\u0633\u062a \u0633\u0631\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 Compose \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647. Repository \u062e\u0628\u0631\u0647\u0627 \u0631\u0648 \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 UI \u0647\u0645\u06cc\u0634\u0647 Flow \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Room \u0631\u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val cachedNews =\n\n\u00a0\u00a0\u00a0 dao.observeNews()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> cachedNews <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 dao.<\/span><span style=\"color: #6F42C1\">observeNews<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0631\u06cc\u0627\u0646 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">API<br>\u2193<br>Repository<br>\u2193<br>Room<br>\u2193<br>Flow<br>\u2193<br>ViewModel<br>\u2193<br>Compose<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 UI \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u0648\u062c\u0648\u062f \u0628\u0627\u0634\u0647\u060c Room \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0627\u0632\u0647 \u0628\u0647\u200c\u0631\u0648\u0632 \u0645\u06cc\u0634\u0647 \u0648 \u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0642\u0637\u0639 \u0628\u0627\u0634\u0647\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc Room \u0647\u0645\u0686\u0646\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0646. \u0627\u06af\u0631 \u06af\u0627\u0647\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0632 API \u0648 \u06af\u0627\u0647\u06cc \u0627\u0632 Room \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0627\u062f\u06cc\u0645\u060c \u0647\u0645\u0627\u0647\u0646\u06af \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0635\u0641\u062d\u0647 \u0633\u062e\u062a\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Memory Cache <\/strong><strong>\u062f\u0631<\/strong><strong> Repository<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a Cache \u0645\u0648\u0642\u062a \u062f\u0627\u062e\u0644 RAM \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0648 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private var memoryCache:\n\n\u00a0\u00a0\u00a0 List&lt;NewsEntity> =\n\n\u00a0\u00a0\u00a0 emptyList()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">var<\/span><span style=\"color: #24292E\"> memoryCache:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">NewsEntity<\/span><span style=\"color: #D73A49\">&gt;<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">emptyList<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0644\u06cc\u0633\u062a \u0641\u0642\u0637 \u062a\u0627 \u0648\u0642\u062a\u06cc Process \u0628\u0631\u0646\u0627\u0645\u0647 \u0632\u0646\u062f\u0647 \u0627\u0633\u062a \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0647. \u0648\u0642\u062a\u06cc \u062e\u0628\u0631\u0647\u0627 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0646 \u06cc\u0627 \u0627\u0632 Room \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0646\u060c Memory Cache \u0647\u0645 \u067e\u0631 \u0645\u06cc\u0634\u0647. \u062f\u0641\u0639\u0647 \u0628\u0639\u062f Repository \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u062f\u0648\u0646 Query \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u062c\u0648\u062f \u062f\u0631 RAM \u0631\u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06a9\u0646\u0647. \u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0633\u062a\u0647 \u0628\u0634\u0647 \u06cc\u0627 \u0633\u06cc\u0633\u062a\u0645 Process \u0627\u0648\u0646 \u0631\u0648 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u062d\u0630\u0641 \u0628\u06a9\u0646\u0647\u060c \u0627\u06cc\u0646 Cache \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a<\/strong><strong> Memory Cache <\/strong><strong>\u062e\u0628\u0631\u0647\u0627 \u0628\u0627<\/strong><strong> Cache <\/strong><strong>\u062a\u0635\u0627\u0648\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u062f\u0648 Memory Cache \u062c\u062f\u0627 \u062f\u0627\u0631\u06cc\u0645. \u0645\u062a\u063a\u06cc\u0631 memoryCache \u062f\u0627\u062e\u0644 Repository\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0646\u06cc \u062e\u0628\u0631\u0647\u0627 \u0645\u062b\u0644 \u0639\u0646\u0648\u0627\u0646\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 URL \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. Coil \u0647\u0645 Memory Cache \u062e\u0648\u062f\u0634 \u0631\u0648 \u062f\u0627\u0631\u0647 \u0648 \u0641\u0627\u06cc\u0644 \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0634\u062f\u0647\u200c\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0648 \u062f\u0627\u062e\u0644 RAM \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Repository Memory Cache<\/strong> \u2192 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0628\u0631\u0647\u0627<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Coil Memory Cache<\/strong> \u2192 \u062e\u0648\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0622\u0645\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u0634<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648\u060c \u0644\u0632\u0648\u0645\u0627\u064b \u062f\u06cc\u06af\u0631\u06cc \u0631\u0648 \u067e\u0627\u06a9 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0647\u0646\u06af\u0627\u0645 \u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 Cache\u0647\u0627 \u0647\u0631 \u062f\u0648 \u0628\u062e\u0634 \u0631\u0648 \u062c\u062f\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Disk Cache <\/strong><strong>\u062e\u0628\u0631\u0647\u0627 \u0648 \u062a\u0635\u0627\u0648\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0646\u06cc \u062e\u0628\u0631\u0647\u0627\u060c Room \u0646\u0642\u0634 Disk Cache \u0631\u0648 \u062f\u0627\u0631\u0647. \u06cc\u0639\u0646\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0627\u062e\u0644 \u0641\u0627\u06cc\u0644 SQLite \u06af\u0648\u0634\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0646 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0633\u062a\u0647\u200c\u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646. \u0628\u0631\u0627\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0647\u0645 Coil \u06cc\u06a9 Disk Cache \u062c\u062f\u0627 \u062f\u0627\u0631\u0647 \u0648 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f\u0634\u062f\u0647 \u0631\u0648 \u0631\u0648\u06cc \u062d\u0627\u0641\u0638\u0647 \u06af\u0648\u0634\u06cc \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Room Disk Cache<\/strong> \u2192 \u0639\u0646\u0648\u0627\u0646\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u060c \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0648 URL \u0639\u06a9\u0633<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Coil Disk Cache<\/strong> \u2192 \u0641\u0627\u06cc\u0644 \u0648\u0627\u0642\u0639\u06cc \u0639\u06a9\u0633 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062f\u0631 \u062d\u0627\u0644\u062a \u0622\u0641\u0644\u0627\u06cc\u0646\u060c Room \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0628\u0631 \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647 \u0648 Coil \u062a\u0635\u0648\u06cc\u0631 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 URL \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0627\u0632 Disk Cache \u062e\u0648\u062f\u0634 \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u062f\u0627\u062e\u0644<\/strong><strong> Room <\/strong><strong>\u0630\u062e\u06cc\u0631\u0647 \u0646\u06a9\u0631\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Room \u0641\u0642\u0637 \u0622\u062f\u0631\u0633 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val authorImageUrl: String?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0648\u062f \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0628\u0647 \u0634\u06a9\u0644 ByteArray \u06cc\u0627 Blob \u062f\u0627\u062e\u0644 SQLite \u0646\u06af\u0630\u0627\u0634\u062a\u06cc\u0645\u060c \u0686\u0648\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062d\u062c\u0645 \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u0646 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0648\u0646\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u0633\u0646\u06af\u06cc\u0646 \u0648 Query\u0647\u0627 \u0631\u0648 \u06a9\u0646\u062f \u0628\u06a9\u0646\u0647. \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0627\u06cc \u0645\u062b\u0644 Coil \u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f\u060c \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0646\u062f\u0627\u0632\u0647\u060c Decode \u06a9\u0631\u062f\u0646 \u0648 Cache \u062a\u0635\u0627\u0648\u06cc\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0648 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0648 \u062e\u06cc\u0644\u06cc \u0628\u0647\u062a\u0631 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0633\u062a\u06cc \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u062e\u0644 Room \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u062a\u0648\u0646 <\/strong><strong>profile_image <\/strong><strong>\u0631\u0648\u06cc \u0633\u0631\u0648\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062c\u062f\u0648\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646 \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">profile_image VARCHAR(255)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0633\u062a\u0648\u0646 \u062e\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0646\u06af\u0647 \u0646\u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u061b \u0641\u0642\u0637 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">images\/profiles\/ali.jpg<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0630\u062e\u06cc\u0631\u0647 \u0645\u0633\u06cc\u0631 \u0646\u0633\u0628\u06cc \u0628\u0647\u200c\u062c\u0627\u06cc URL \u06a9\u0627\u0645\u0644 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0627\u06af\u0631 \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 \u067e\u0648\u0634\u0647 \u0627\u0635\u0644\u06cc API \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u060c \u0644\u0627\u0632\u0645 \u0646\u0628\u0627\u0634\u0647 \u062a\u0645\u0627\u0645 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645. PHP \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0645\u0633\u06cc\u0631 \u0646\u0633\u0628\u06cc \u0631\u0648 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u067e\u0627\u0633\u062e \u0628\u0647 URL \u06a9\u0627\u0645\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a<\/strong><strong> URL <\/strong><strong>\u06a9\u0627\u0645\u0644 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631<\/strong><strong> PHP<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Query \u0633\u0631\u0648\u0631 \u0627\u0632 CONCAT \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CONCAT(\n\n\u00a0\u00a0\u00a0 'https:\/\/gym.yummybrands.studio\/helloiman_api\/',\n\n\u00a0\u00a0\u00a0 news_authors.profile_image\n\n)\n\nAS author_image_url<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">CONCAT<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&#39;https:\/\/gym.yummybrands.studio\/helloiman_api\/&#39;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 news_authors.profile_image<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">AS author_image_url<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0641\u0642\u0637 \u0645\u0633\u06cc\u0631 \u0646\u0633\u0628\u06cc \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 URL \u06a9\u0627\u0645\u0644 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0647. CONCAT \u0622\u062f\u0631\u0633 \u0627\u0635\u0644\u06cc \u0633\u0631\u0648\u0631 \u0648 \u0645\u0633\u06cc\u0631 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 \u0647\u0645 \u0645\u06cc\u200c\u0686\u0633\u0628\u0648\u0646\u0647 \u0648 \u0645\u0642\u062f\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\"><a href=\"https:\/\/gym.yummybrands.studio\/helloiman_api\/images\/profiles\/ali.jpg\">https:\/\/gym.yummybrands.studio\/helloiman_api\/images\/profiles\/ali.jpg<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06a9\u0646\u062a\u0631\u0644 \u0646\u0628\u0648\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627 <\/strong><strong>CASE<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646\u0647 \u0628\u0639\u0636\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u200c\u0647\u0627 \u0639\u06a9\u0633 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u062f\u0631 Query \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CASE\n\n\u00a0\u00a0\u00a0 WHEN profile_image IS NULL\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 OR profile_image = ''\n\n\u00a0\u00a0\u00a0 THEN NULL\n\n\u00a0\u00a0\u00a0 ELSE ...\n\nEND<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">CASE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 WHEN profile_image IS NULL<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 OR profile_image <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&#39;&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 THEN NULL<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ELSE <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">END<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0633\u06cc\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c PHP \u0645\u0642\u062f\u0627\u0631 null \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647. \u0627\u06cc\u0646 \u0628\u0647\u062a\u0631 \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 URL \u062e\u0631\u0627\u0628 \u0627\u0633\u062a. \u0633\u0645\u062a \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0647\u0645 authorImageUrl \u0631\u0648 Nullable \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u062f\u0648\u0646 \u0639\u06a9\u0633 \u062f\u0686\u0627\u0631 \u062e\u0637\u0627 \u0646\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646<\/strong><strong> Coil Compose<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062f\u0631 Compose \u0627\u06cc\u0646 Dependency \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"io.coil-kt.coil3:coil-compose:3.5.0\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;io.coil-kt.coil3:coil-compose:3.5.0&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Composable\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 AsyncImage \u0631\u0648 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u0645\u0648\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647. AsyncImage URL \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u063a\u06cc\u0631\u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0639\u062f \u0646\u062a\u06cc\u062c\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 UI \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0635\u0648\u06cc\u0631\u060c \u0633\u0627\u062e\u062a Bitmap \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a Coroutine \u0631\u0648 \u062e\u0648\u062f\u0645\u0648\u0646 \u062f\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0634\u0628\u06a9\u0647<\/strong><strong> OkHttp <\/strong><strong>\u0628\u0631\u0627\u06cc<\/strong><strong> Coil<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Coil 3 \u0628\u062e\u0634 \u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0632 \u0634\u0628\u06a9\u0647 \u062f\u0627\u062e\u0644 Dependency \u062c\u062f\u0627 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>implementation(\n\n\u00a0\u00a0\u00a0 \"io.coil-kt.coil3:coil-network-okhttp:3.5.0\"\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">implementation<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;io.coil-kt.coil3:coil-network-okhttp:3.5.0&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">coil-compose \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 coil-network-okhttp \u0628\u0647 Coil \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647 URL\u0647\u0627\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0631\u0648 \u0628\u0627 OkHttp \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u06a9\u0646\u0647. \u0627\u06af\u0631 \u0641\u0642\u0637 Dependency \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Compose \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u0645\u06a9\u0646\u0647 \u0646\u0645\u0627\u06cc\u0634 Resource\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u06a9\u0627\u0631 \u0628\u06a9\u0646\u0647 \u0648\u0644\u06cc Coil \u0646\u062a\u0648\u0646\u0647 \u0639\u06a9\u0633 HTTPS \u0633\u0631\u0648\u0631 \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>@SerializedName <\/strong><strong>\u0628\u0631\u0627\u06cc<\/strong><strong> URL <\/strong><strong>\u062a\u0635\u0648\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0627\u06cc\u0646 \u0641\u06cc\u0644\u062f \u0631\u0648 \u0628\u0627 \u0646\u0627\u0645 \u0632\u06cc\u0631 \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">&#8220;author_image_url&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062f\u0631 \u06a9\u0627\u062a\u0644\u06cc\u0646 \u0627\u0632 \u0646\u0627\u0645 Camel Case \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">authorImageUrl<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0645\u0627\u0647\u0646\u06af \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u062f\u0648 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@SerializedName(\n\n\u00a0\u00a0\u00a0 \"author_image_url\"\n\n)\n\nval authorImageUrl: String?<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@SerializedName<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;author_image_url&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> authorImageUrl: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 Gson \u0645\u06cc\u200c\u0641\u0647\u0645\u0647 \u0645\u0642\u062f\u0627\u0631 author_image_url \u062f\u0627\u062e\u0644 JSON \u0628\u0627\u06cc\u062f \u062f\u0627\u062e\u0644 \u0648\u06cc\u0698\u06af\u06cc authorImageUrl \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0630\u062e\u06cc\u0631\u0647<\/strong><strong> URL <\/strong><strong>\u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u062e\u0644<\/strong><strong> Room<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 NewsEntity \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646 \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@ColumnInfo(\n\n\u00a0\u00a0\u00a0 name = \"author_image_url\"\n\n)\n\nval authorImageUrl: String?<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@ColumnInfo<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 name <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;author_image_url&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> authorImageUrl: <\/span><span style=\"color: #6F42C1\">String<\/span><span style=\"color: #24292E\">?<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0633\u062a\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u0628\u0634\u0647\u060c JSON \u0642\u0628\u0644\u06cc \u062f\u06cc\u06af\u0647 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0646\u06cc\u0633\u062a\u061b \u0627\u0645\u0627 URL \u062a\u0635\u0648\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u062e\u0628\u0631 \u062f\u0627\u062e\u0644 Room \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f\u0647. Compose \u0647\u0645\u0648\u0646 URL \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647 Coil \u0645\u06cc\u200c\u062f\u0647 \u0648 Coil \u0627\u0628\u062a\u062f\u0627 Disk Cache \u062e\u0648\u062f\u0634 \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0628\u0631 \u0648 \u0647\u0645 \u0631\u0627\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062d\u0641\u0638 \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u0646\u0633\u062e\u0647<\/strong><strong> Database <\/strong><strong>\u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0627\u062f\u06cc\u0645\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644\u0627\u064b \u062c\u062f\u0648\u0644 news_cache \u0633\u062a\u0648\u0646 author_image_url \u0646\u062f\u0627\u0634\u062a. \u0628\u0639\u062f \u0627\u0632 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f\u060c \u0633\u0627\u062e\u062a\u0627\u0631 Entity \u0639\u0648\u0636 \u0634\u062f. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0633\u062e\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u0627\u0632 \u06f1 \u0628\u0647 \u06f2 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">version = 2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u0633\u0627\u062e\u062a\u0627\u0631 Entity\u0647\u0627 \u0631\u0648 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0641\u0627\u06cc\u0644 SQLite \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u06af\u0631 Entity \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u0647 \u0627\u0645\u0627 \u0646\u0633\u062e\u0647 Database \u0647\u0645\u0648\u0646 \u0645\u0642\u062f\u0627\u0631 \u0642\u0628\u0644\u06cc \u0628\u0627\u0642\u06cc \u0628\u0645\u0648\u0646\u0647\u060c Room \u0645\u062a\u0648\u062c\u0647 \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0637\u0627 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <\/strong><strong>fallbackToDestructiveMigration<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">.fallbackToDestructiveMigration()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 Room \u0628\u0628\u06cc\u0646\u0647 \u0646\u0633\u062e\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0648\u0644\u06cc Migration \u0645\u0634\u062e\u0635\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u062f\u0647\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0642\u062f\u06cc\u0645\u06cc \u0631\u0648 \u062d\u0630\u0641 \u0648 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0631\u0648 \u0627\u0632 \u0627\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u0628\u06a9\u0646\u0647. \u0686\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0641\u0642\u0637 Cache \u0627\u062e\u0628\u0627\u0631\u0647 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0635\u0644\u06cc \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647\u060c \u062d\u0630\u0641 Cache \u0642\u0628\u0644\u06cc \u0645\u0634\u06a9\u0644 \u0645\u0647\u0645\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0632 API \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u06cc \u06a9\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a\u200c\u0647\u0627\u06cc \u0634\u062e\u0635\u06cc \u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062e\u0637\u0631\u0646\u0627\u06a9\u0647\u061b \u0686\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc \u0631\u0648 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u062c\u0627\u0634 Migration \u0648\u0627\u0642\u0639\u06cc \u0646\u0648\u0634\u062a\u0647 \u0628\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0648\u06cc\u0698\u06af\u06cc <\/strong><strong>cachedAt<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Entity \u0627\u06cc\u0646 \u0632\u0645\u0627\u0646 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">val cachedAt: Long<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publishedAt \u0632\u0645\u0627\u0646 \u0627\u0646\u062a\u0634\u0627\u0631 \u062e\u0648\u062f \u062e\u0628\u0631\u0647\u060c \u0627\u0645\u0627 cachedAt \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0627\u0632 \u062e\u0628\u0631 \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647. \u0627\u06cc\u0646 \u062f\u0648 \u0628\u0627 \u0647\u0645 \u0641\u0631\u0642 \u062f\u0627\u0631\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>publishedAt <\/strong>\u2192 \u062e\u0628\u0631 \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647\u061f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>cachedAt <\/strong>\u2192 \u0628\u0631\u0646\u0627\u0645\u0647 \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u062e\u0628\u0631 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 Cache \u06a9\u0631\u062f\u0647\u061f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0645\u0644\u200c\u062a\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0628\u0627 cachedAt \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u0645 Cache \u0642\u062f\u06cc\u0645\u06cc \u0634\u062f\u0647 \u06cc\u0627 \u0647\u0646\u0648\u0632 \u062a\u0627\u0632\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0628\u062f\u06cc\u0644 \u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631 \u0628\u0647<\/strong><strong> Cache <\/strong><strong>\u0645\u062d\u0644\u06cc<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u062e\u0628\u0627\u0631\u060c \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0631\u0648 \u0628\u0647 Entity \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val newsEntities =\n\n\u00a0\u00a0\u00a0 response.data.map { news ->\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NewsEntity(\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 id = news.id,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 title = news.title,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 description = news.description,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 authorName = news.authorName,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 authorImageUrl = news.authorImageUrl,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 publishedAt = news.publishedAt,\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cachedAt = cachedAt\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\n\n\u00a0\u00a0\u00a0 }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> newsEntities <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 response.<\/span><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">map<\/span><span style=\"color: #24292E\"> { news <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">NewsEntity<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 id <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.id,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 title <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.title,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 description <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.description,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 authorName <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.authorName,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 authorImageUrl <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.authorImageUrl,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 publishedAt <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.publishedAt,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cachedAt <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> cachedAt<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062f\u0644 ApiNews \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631\u0647\u060c \u0627\u0645\u0627 NewsEntity \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062f\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0627\u0633\u062a. \u062f\u0631 \u0647\u0645\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644\u060c \u0632\u0645\u0627\u0646 cachedAt \u0631\u0648 \u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u061b \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0641\u06cc\u0644\u062f \u0627\u0632 \u0633\u0631\u0648\u0631 \u0646\u0645\u06cc\u0627\u062f \u0648 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc Cache \u0645\u062d\u0644\u06cc \u0645\u0639\u0646\u06cc \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u06a9\u0627\u0645\u0644<\/strong><strong> Cache <\/strong><strong>\u0628\u0627 <\/strong><strong>replaceAll<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 DAO \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0631\u0648 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>@Transaction\n\nopen suspend fun replaceAll(\n\n\u00a0\u00a0\u00a0 news: List&lt;NewsEntity>\n\n) {\n\n\u00a0\u00a0\u00a0 deleteAll()\n\n\u00a0\u00a0\u00a0 insertAll(news)\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">@Transaction<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">open<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">replaceAll<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 news: <\/span><span style=\"color: #6F42C1\">List<\/span><span style=\"color: #24292E\">&lt;<\/span><span style=\"color: #6F42C1\">NewsEntity<\/span><span style=\"color: #24292E\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">) {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">deleteAll<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">insertAll<\/span><span style=\"color: #24292E\">(news)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u062f\u0641 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0627\u062e\u0628\u0627\u0631\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u062f\u06cc\u0645\u06cc Room \u067e\u0627\u06a9 \u0648 \u0644\u06cc\u0633\u062a \u062a\u0627\u0632\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0628\u0634\u0647. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u062e\u0628\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062d\u0630\u0641 \u0634\u062f\u0646\u060c \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0634\u0647 \u062f\u0627\u062e\u0644 Cache \u06af\u0648\u0634\u06cc \u0628\u0627\u0642\u06cc \u0646\u0645\u0648\u0646\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>@Transaction<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0645\u0644\u06cc\u0627\u062a replaceAll \u0627\u0632 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">\u062d\u0630\u0641 \u0647\u0645\u0647 \u062e\u0628\u0631\u0647\u0627<br>\u2193<br>\u062f\u0631\u062c \u0627\u062e\u0628\u0627\u0631 \u062a\u0627\u0632\u0647<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 @Transaction \u0627\u06cc\u0646 \u062f\u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0646. \u0627\u06af\u0631 Insert \u0648\u0633\u0637 \u06a9\u0627\u0631 \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u0647\u060c Room \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0648 \u0628\u0631\u06af\u0631\u062f\u0648\u0646\u0647 \u062a\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062f\u0631 \u062d\u0627\u0644\u062a \u0646\u0635\u0641\u0647\u200c\u0648\u0646\u06cc\u0645\u0647 \u0628\u0627\u0642\u06cc \u0646\u0645\u0648\u0646\u0647. \u0628\u062f\u0648\u0646 Transaction \u0645\u0645\u06a9\u0646 \u0628\u0648\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u062f\u06cc\u0645\u06cc \u062d\u0630\u0641 \u0628\u0634\u0646\u060c \u0627\u0645\u0627 \u0627\u062e\u0628\u0627\u0631 \u062c\u062f\u06cc\u062f \u06a9\u0627\u0645\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u0646 \u0648 \u062c\u062f\u0648\u0644 \u062e\u0627\u0644\u06cc \u0628\u0627\u0642\u06cc \u0628\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>OnConflictStrategy.REPLACE<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 Insert \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">OnConflictStrategy.REPLACE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0628\u0631\u06cc \u0628\u0627 \u0647\u0645\u0648\u0646 \u0634\u0646\u0627\u0633\u0647 \u0642\u0628\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Room \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0646\u0633\u062e\u0647 \u0642\u062f\u06cc\u0645\u06cc \u0628\u0627 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u0634\u0647. \u0634\u0646\u0627\u0633\u0647 \u0647\u0631 \u062e\u0628\u0631 \u0627\u0632 \u0633\u0631\u0648\u0631 \u0645\u06cc\u0627\u062f \u0648 Primary Key \u0627\u0633\u062a\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Sync \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0639\u062b \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646 \u0686\u0646\u062f \u0646\u0633\u062e\u0647 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0627\u0632 \u06cc\u06a9 \u062e\u0628\u0631 \u0646\u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 <\/strong><strong>CacheSource<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u06a9\u062c\u0627 \u0627\u0648\u0645\u062f\u0647\u060c \u0627\u06cc\u0646 Enum \u0631\u0648 \u0633\u0627\u062e\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>enum class CacheSource {\n\n\u00a0\u00a0\u00a0 Network,\n\u00a0\u00a0\u00a0 Memory,\n\u00a0\u00a0\u00a0 Disk\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">enum<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">CacheSource<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Network,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Memory,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Disk<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0628\u0647 UI \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u06af\u0647 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0644\u0627\u0646 \u0645\u06cc\u200c\u0628\u06cc\u0646\u0647 \u0627\u0632 \u0633\u0631\u0648\u0631\u060c RAM \u06cc\u0627 Room \u0627\u0648\u0645\u062f\u0647. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0645\u0648\u0632\u0634\u06cc\u060c \u0686\u0646\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631 Debug \u06a9\u0631\u062f\u0646 \u0631\u0641\u062a\u0627\u0631 Cache \u0647\u0645 \u062e\u06cc\u0644\u06cc \u0645\u0641\u06cc\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0645\u062f\u0644 <\/strong><strong>CacheResult<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0645\u0644\u06cc\u0627\u062a Cache \u0641\u0642\u0637 \u0645\u0648\u0641\u0642 \u06cc\u0627 \u0646\u0627\u0645\u0648\u0641\u0642 \u0646\u06cc\u0633\u062a\u061b \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u0648\u0641\u0642 \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646\u06cc\u0645 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0686\u0647 \u0628\u0648\u062f\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>data class Success(\n\n\u00a0\u00a0\u00a0 val source: CacheSource,\n\u00a0\u00a0\u00a0 val message: String\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">data<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">Success<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> source: <\/span><span style=\"color: #6F42C1\">CacheSource<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> message: <\/span><span style=\"color: #6F42C1\">String<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b \u062f\u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0647\u0631 \u062f\u0648 \u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0646\u060c \u0627\u0645\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631 \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0632 Room \u0646\u062a\u06cc\u062c\u0647 \u06af\u0631\u0641\u062a\u0647 \u0628\u0627\u0634\u0647. \u0628\u0627 CacheResult\u060c ViewModel \u0647\u0645 \u0646\u062a\u06cc\u062c\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648 \u0647\u0645 \u0645\u0646\u0628\u0639 \u062f\u0627\u062f\u0647 \u0631\u0648 \u06cc\u06a9\u062c\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc<\/strong><strong> Cache First<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0628\u062a\u062f\u0627 Cache \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val availableCache =\n\n\u00a0\u00a0\u00a0 findAvailableCache()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> availableCache <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">findAvailableCache<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Memory \u06cc\u0627 Room \u062f\u0627\u062f\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c UI \u0627\u0632 \u0642\u0628\u0644 \u0627\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u060c \u0686\u0648\u0646 Flow \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Room \u062f\u0627\u0626\u0645\u0627\u064b \u062f\u0631 \u062d\u0627\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0633\u062a. \u0633\u067e\u0633 Repository \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0631\u0648 \u0627\u0632 \u0633\u0631\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0628\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">downloadAndSaveNews()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0647\u060c Cache \u062a\u0627\u0632\u0647 \u0645\u06cc\u0634\u0647. \u0627\u06af\u0631 \u0634\u0628\u06a9\u0647 \u062e\u0637\u0627 \u0628\u062f\u0647\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u062f\u06cc\u0645\u06cc Cache \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0647. \u0645\u0632\u06cc\u062a \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0635\u0641\u062d\u0647 \u0645\u0646\u062a\u0638\u0631 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u0645\u06cc\u200c\u0645\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc<\/strong><strong> Network First<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 loadNetworkFirst \u0627\u0628\u062a\u062f\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0633\u0631\u0648\u0631 \u0627\u0645\u062a\u062d\u0627\u0646 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">downloadAndSaveNews()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u060c \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0627\u062e\u0628\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u0634\u0646. \u0627\u06af\u0631 \u062e\u0637\u0627 \u0631\u062e \u062f\u0627\u062f\u060c Repository \u0628\u0639\u062f\u0627\u064b Memory \u0648 Room \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">findAvailableCache()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u0646\u0627\u0633\u0628\u0647 \u06a9\u0647 \u062a\u0627\u0632\u06af\u06cc\u200c\u0634\u0648\u0646 \u0627\u0647\u0645\u06cc\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u0647. \u06a9\u0627\u0631\u0628\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u0646\u062a\u0638\u0631 \u0634\u0628\u06a9\u0647 \u0645\u06cc\u200c\u0645\u0648\u0646\u0647 \u0648 \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0634\u06a9\u0633\u062a\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0642\u0628\u0644\u06cc \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062d\u0627\u0644\u062a<\/strong><strong> Offline Only<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 \u0632\u06cc\u0631 \u0627\u0635\u0644\u0627\u064b API \u0631\u0648 \u0635\u062f\u0627 \u0646\u0645\u06cc\u200c\u0632\u0646\u0647:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">loadOfflineOnly()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 Memory Cache \u0648 Room \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0647\u062f\u0641\u0634 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0631\u0641\u062a\u0627\u0631 \u0622\u0641\u0644\u0627\u06cc\u0646 \u0631\u0648 \u0628\u062f\u0648\u0646 \u062e\u0627\u0645\u0648\u0634 \u06a9\u0631\u062f\u0646 \u0648\u0627\u0642\u0639\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0647\u0645 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 Memory \u062e\u0627\u0644\u06cc \u0628\u0627\u0634\u0647 \u0627\u0645\u0627 Room \u062f\u0627\u062f\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647\u060c \u0627\u062e\u0628\u0627\u0631 \u0627\u0632 Disk Cache \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0646\u061b \u0627\u06af\u0631 \u0647\u0631 \u062f\u0648 \u062e\u0627\u0644\u06cc \u0628\u0627\u0634\u0646\u060c \u062e\u0637\u0627\u06cc \u0646\u0628\u0648\u062f Cache \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0627\u0628\u0639 <\/strong><strong>findAvailableCache<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0646\u0637\u0642 \u0627\u0646\u062a\u062e\u0627\u0628 Cache \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0645\u0634\u062a\u0631\u06a9 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>private suspend fun findAvailableCache():\n\n\u00a0\u00a0\u00a0 Pair&lt;List&lt;NewsEntity>, CacheSource?><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">suspend<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">fun<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">findAvailableCache<\/span><span style=\"color: #24292E\">():<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 Pair<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">List<\/span><span style=\"color: #D73A49\">&lt;<\/span><span style=\"color: #24292E\">NewsEntity<\/span><span style=\"color: #D73A49\">&gt;<\/span><span style=\"color: #24292E\">, CacheSource?<\/span><span style=\"color: #D73A49\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u0627\u0628\u062a\u062f\u0627 Memory Cache \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0686\u0648\u0646 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631\u0647. \u0627\u06af\u0631 \u062e\u0627\u0644\u06cc \u0628\u0648\u062f\u060c Room \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647. \u0627\u06af\u0631 Room \u062f\u0627\u062f\u0647 \u062f\u0627\u0634\u062a\u060c \u0647\u0645\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u062f\u0627\u062e\u0644 Memory Cache \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647 \u062a\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0639\u062f\u06cc \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0631\u062a\u06cc\u0628 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\"><strong>Memory Cache<\/strong><br>\u2193 \u0627\u06af\u0631 \u062e\u0627\u0644\u06cc \u0628\u0648\u062f<br><strong>Room Cache<\/strong><br>\u2193 \u0627\u06af\u0631 \u062e\u0627\u0644\u06cc \u0628\u0648\u062f<br><strong>\u0628\u062f\u0648\u0646 Cache<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 \u062e\u0631\u0648\u062c\u06cc <\/strong><strong>findAvailableCache <\/strong><strong>\u0627\u0632 \u0646\u0648\u0639 <\/strong><strong>Pair <\/strong><strong>\u0627\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u062f\u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0648\u0646\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>\u062e\u0648\u062f \u0644\u06cc\u0633\u062a \u062e\u0628\u0631\u0647\u0627 + \u0645\u0646\u0628\u0639 Cache<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0632 Pair \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Pair(\n\n\u00a0\u00a0\u00a0 diskCache,\n\n\u00a0\u00a0\u00a0 CacheSource.Disk\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">Pair<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 diskCache,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 CacheSource.Disk<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0642\u062f\u0627\u0631 first \u0644\u06cc\u0633\u062a \u062e\u0628\u0631\u0647\u0627\u0633\u062a \u0648 \u0645\u0642\u062f\u0627\u0631 second \u0645\u0646\u0628\u0639 Cache. \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u062f \u0628\u0647\u200c\u062c\u0627\u06cc Pair \u06cc\u06a9 Data Class \u0628\u0627 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0648\u0627\u0636\u062d\u200c\u062a\u0631 \u0633\u0627\u062e\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0645\u0631\u06cc\u0646 \u06a9\u0648\u0686\u06a9 \u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u0645\u0639\u200c\u0648\u062c\u0648\u0631 \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u0631 \u06a9\u0631\u062f\u0646<\/strong><strong> Memory Cache <\/strong><strong>\u0627\u0632<\/strong><strong> Room<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc Memory Cache \u062e\u0627\u0644\u06cc\u0647 \u0648\u0644\u06cc Room \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0631\u0647\u060c \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>memoryCache =\n\n\u00a0\u00a0\u00a0 diskCache<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">memoryCache <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 diskCache<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc \u06af\u0648\u0634\u06cc \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u0634\u0646\u060c \u0627\u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u062f\u0631 \u0647\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0646\u0633\u062e\u0647 RAM \u0631\u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06a9\u0646\u0646. \u0627\u06cc\u0646 \u0647\u0645\u0648\u0646 \u062a\u0631\u06a9\u06cc\u0628 Disk Cache \u0648 Memory Cache \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">\u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0644<br>Room \u2192 Memory<br>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0639\u062f\u06cc<br>Memory \u2192 Repository<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Memory Cache <\/strong><strong>\u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647<\/strong><strong> UI <\/strong><strong>\u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646\u06a9\u0647 Repository \u06cc\u06a9 Memory Cache \u062f\u0627\u0631\u0647\u060c UI \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u062e\u0628\u0627\u0631 \u0631\u0648 \u0627\u0632 Room \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. Memory Cache \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0633\u0631\u06cc\u0639 \u0645\u0646\u0628\u0639 \u0648 \u0646\u0645\u0627\u06cc\u0634 \u0631\u0641\u062a\u0627\u0631 Cache \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0627\u0645\u0627 \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc State \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc Room \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f\u0647. \u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u062c\u0644\u0648\u06cc \u062f\u0648 \u0645\u0646\u0628\u0639 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0631\u0627\u06cc UI \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0627\u06af\u0631 UI \u06af\u0627\u0647\u06cc \u0627\u0632 Memory \u0648 \u06af\u0627\u0647\u06cc \u0627\u0632 Room \u0644\u06cc\u0633\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0631\u062f\u060c \u0645\u0645\u06a9\u0646 \u0628\u0648\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u06cc\u0646 \u062f\u0648 \u0628\u0627 \u0647\u0645 \u0647\u0645\u0627\u0647\u0646\u06af \u0646\u0628\u0627\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9\u062c\u0627\u06cc \u0627\u062e\u0628\u0627\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 downloadAndSaveNews() \u062a\u0645\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 Cache \u0631\u0648 \u06cc\u06a9\u062c\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">\u062f\u0631\u06cc\u0627\u0641\u062a API<br>\u2193<br>\u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 Entity<br>\u2193<br>\u067e\u0631 \u06a9\u0631\u062f\u0646 Memory Cache<br>\u2193<br>\u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 Room<br>\u2193<br>\u062f\u0627\u0646\u0644\u0648\u062f \u0648 Cache \u062a\u0635\u0627\u0648\u06cc\u0631<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 Cache First \u0648 Network First \u0647\u0631 \u062f\u0648 \u0627\u0632 \u06cc\u06a9 \u0645\u0646\u0637\u0642 \u0645\u0634\u062a\u0631\u06a9 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u0648 \u06a9\u062f \u062a\u06a9\u0631\u0627\u0631\u06cc \u062f\u0627\u062e\u0644 Repository \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u06af\u0631\u0641\u062a\u0646<\/strong><strong> ImageLoader <\/strong><strong>\u0645\u0634\u062a\u0631\u06a9<\/strong><strong> Coil<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val imageLoader =\n\n\u00a0\u00a0\u00a0 context.imageLoader<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> imageLoader <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 context.imageLoader<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">ImageLoader \u0628\u062e\u0634 \u0627\u0635\u0644\u06cc Coil \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631\u060c Decode\u060c Memory Cache \u0648 Disk Cache \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 context.imageLoader \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u0647\u0645 Preload \u062a\u0635\u0627\u0648\u06cc\u0631 \u0648 \u0647\u0645 AsyncImage \u0627\u0632 ImageLoader \u0645\u0634\u062a\u0631\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646 \u0648 \u0628\u0647 \u06cc\u06a9 Cache \u0648\u0627\u062d\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Repository <\/strong><strong>\u0628\u0647<\/strong><strong> Context <\/strong><strong>\u0646\u06cc\u0627\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 Cache \u062a\u0635\u0627\u0648\u06cc\u0631\u060c Repository \u0641\u0642\u0637 \u0628\u0627 API \u0648 DAO \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0631\u062f. \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a ImageRequest \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 ImageLoader \u0628\u0647 Context \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class NewsRepository(\n\n\u00a0\u00a0\u00a0 private val context: Context,\n\u00a0\u00a0\u00a0 private val api: NewsApi,\n\u00a0\u00a0\u00a0 private val dao: NewsDao\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">class<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">NewsRepository<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> context: <\/span><span style=\"color: #6F42C1\">Context<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> api: <\/span><span style=\"color: #6F42C1\">NewsApi<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #D73A49\">private<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">val<\/span><span style=\"color: #24292E\"> dao: <\/span><span style=\"color: #6F42C1\">NewsDao<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 MainActivity \u0647\u0645 applicationContext \u0631\u0648 \u0628\u0647 Repository \u062f\u0627\u062f\u06cc\u0645. \u0627\u06cc\u0646 Context \u0628\u0647 \u0639\u0645\u0631 Activity \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 ImageLoader \u0648 Database \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646<\/strong><strong> URL<\/strong><strong>\u0647\u0627\u06cc \u0645\u0639\u062a\u0628\u0631 \u0628\u0627 <\/strong><strong>mapNotNull<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 URL \u0639\u06a9\u0633\u200c\u0647\u0627 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>newsList.mapNotNull { news ->\n\n\u00a0\u00a0\u00a0 news.authorImageUrl\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">newsList.<\/span><span style=\"color: #6F42C1\">mapNotNull<\/span><span style=\"color: #24292E\"> { news <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 news.authorImageUrl<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0645\u0645\u06a9\u0646\u0647 authorImageUrl \u0628\u0631\u0627\u0628\u0631 null \u0628\u0627\u0634\u0647\u060c mapNotNull \u0647\u0645 \u0645\u0642\u062f\u0627\u0631\u0647\u0627 \u0631\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0647\u0645 \u0645\u0648\u0627\u0631\u062f null \u0631\u0648 \u0627\u0632 \u0646\u062a\u06cc\u062c\u0647 \u06a9\u0646\u0627\u0631 \u0645\u06cc\u200c\u0630\u0627\u0631\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0646\u062f\u0627\u0631\u0646\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0631\u0627\u0628 \u0633\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062d\u0630\u0641<\/strong><strong> URL<\/strong><strong>\u0647\u0627\u06cc \u062e\u0627\u0644\u06cc<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062d\u0630\u0641 null\u0647\u0627\u060c \u0627\u06cc\u0646 \u0634\u0631\u0637 \u0631\u0648 \u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.filter { imageUrl ->\n\n\u00a0\u00a0\u00a0 imageUrl.isNotBlank()\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">filter<\/span><span style=\"color: #24292E\"> { imageUrl <\/span><span style=\"color: #D73A49\">-&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 imageUrl.<\/span><span style=\"color: #6F42C1\">isNotBlank<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646\u0647 \u0633\u0631\u0648\u0631 \u0628\u0647\u200c\u062c\u0627\u06cc null \u06cc\u06a9 String \u062e\u0627\u0644\u06cc \u0628\u0641\u0631\u0633\u062a\u0647. \u0628\u0627 isNotBlank() \u0641\u0642\u0637 URL\u0647\u0627\u06cc\u06cc \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646 \u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0645\u0642\u062f\u0627\u0631 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0627\u0631\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062d\u0630\u0641 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u0628\u0627 <\/strong><strong>distinct<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646\u0647 \u06cc\u06a9 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0686\u0646\u062f \u062e\u0628\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0648 URL \u0639\u06a9\u0633\u0634 \u0686\u0646\u062f \u0628\u0627\u0631 \u062f\u0627\u062e\u0644 \u0644\u06cc\u0633\u062a \u062a\u06a9\u0631\u0627\u0631 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">.distinct()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 URL\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u0631\u0648 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0627\u06cc \u0639\u06a9\u0633 \u06cc\u06a9 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0641\u0642\u0637 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a Preload \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u0634\u0647\u060c \u0646\u0647 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u062e\u0628\u0631\u0647\u0627\u06cc \u0627\u0648\u0646 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0633\u0627\u062e\u062a <\/strong><strong>ImageRequest<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u0647\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 \u0627\u06cc\u0646 Builder \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ImageRequest\n\n\u00a0\u00a0 \u00a0.Builder(context)\n\n\u00a0\u00a0\u00a0 .data(imageUrl)\n\n\u00a0\u00a0\u00a0 .build()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">ImageRequest<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0 \u00a0.<\/span><span style=\"color: #6F42C1\">Builder<\/span><span style=\"color: #24292E\">(context)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">data<\/span><span style=\"color: #24292E\">(imageUrl)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">build<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">data \u0645\u0646\u0628\u0639 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 URL \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc\u0647. Builder \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Cache\u060c \u0627\u0646\u062f\u0627\u0632\u0647\u060c Placeholder \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0631\u0648 \u0642\u0628\u0644 \u0627\u0632 \u0633\u0627\u062e\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0634\u062e\u0635 \u0628\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646<\/strong><strong> Memory <\/strong><strong>\u0648<\/strong><strong> Disk Cache <\/strong><strong>\u062a\u0635\u0648\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u0635\u0648\u06cc\u0631 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.memoryCachePolicy(\n\u00a0\u00a0\u00a0 CachePolicy.ENABLED\n)\n\n\n.diskCachePolicy(\n\u00a0\u00a0\u00a0 CachePolicy.ENABLED\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">memoryCachePolicy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 CachePolicy.ENABLED<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">.<\/span><span style=\"color: #6F42C1\">diskCachePolicy<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 CachePolicy.ENABLED<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644\u06cc \u0628\u0647 Coil \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0634\u062f\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 RAM \u0646\u06af\u0647 \u062f\u0627\u0631\u0647. \u062f\u0648\u0645\u06cc \u0647\u0645 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u062f\u0627\u062e\u0644 \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc Cache \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062a\u0635\u0648\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 Memory Cache \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 Disk Cache \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Preload <\/strong><strong>\u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0627 <\/strong><strong>imageLoader.execute<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Cache \u06a9\u0631\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0642\u0628\u0644 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>imageLoader.execute(\n\u00a0\u00a0\u00a0 request\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">imageLoader.<\/span><span style=\"color: #6F42C1\">execute<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 request<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a Target \u062a\u0635\u0648\u06cc\u0631\u06cc \u0646\u062f\u0627\u0631\u0647\u061b \u06cc\u0639\u0646\u06cc \u0647\u062f\u0641\u0634 \u0646\u0645\u0627\u06cc\u0634 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0627\u062e\u0644 \u06cc\u06a9 Composable \u0646\u06cc\u0633\u062a. Coil \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0648 \u062f\u0627\u062e\u0644 Cache \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u0647. \u0628\u0639\u062f\u0627\u064b \u0648\u0642\u062a\u06cc AsyncImage \u0647\u0645\u0648\u0646 URL \u0631\u0648 \u0628\u062e\u0648\u0627\u062f\u060c Coil \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0622\u0645\u0627\u062f\u0647 \u0631\u0648 \u0627\u0632 Cache \u067e\u06cc\u062f\u0627 \u0628\u06a9\u0646\u0647. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc\u0634\u0647 \u062a\u0645\u0627\u0645 \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0627\u0633\u062e \u0633\u0631\u0648\u0631 Cache \u0628\u0634\u0646\u060c \u0646\u0647 \u0641\u0642\u0637 \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062a\u0627 \u0627\u0648\u0646 \u0644\u062d\u0638\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u062f\u06cc\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627 <\/strong><strong>cacheAuthorImages <\/strong><strong>\u062a\u0627\u0628\u0639 <\/strong><strong>suspend <\/strong><strong>\u0627\u0633\u062a\u061f<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0632\u0645\u0627\u0646\u200c\u0628\u0631\u0647 \u0648 \u0645\u0645\u06a9\u0646\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u06cc\u0627 \u062e\u0648\u0627\u0646\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u062a\u0627\u0628\u0639 \u0631\u0648 suspend \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">private suspend fun cacheAuthorImages(&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0627\u0628\u0639 \u062f\u0627\u062e\u0644 Coroutine \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u062e\u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647 \u0648 Thread \u0627\u0635\u0644\u06cc UI \u0631\u0648 \u0645\u062a\u0648\u0642\u0641 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0631\u062a\u06cc\u0628 \u0630\u062e\u06cc\u0631\u0647 \u062e\u0628\u0631\u0647\u0627 \u0648<\/strong><strong> Cache <\/strong><strong>\u062a\u0635\u0627\u0648\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0646\u06cc \u0631\u0648 \u062f\u0627\u062e\u0644 Memory \u0648 Room \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u062f\u06cc\u0645 \u0648 \u0628\u0639\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0648 Preload \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>memoryCache =\n\n\u00a0\u00a0\u00a0 newsEntities\n\ndao.replaceAll(\n\n\u00a0\u00a0\u00a0 news = newsEntities\n\n)\n\ncacheAuthorImages(\n\n\u00a0\u00a0\u00a0 newsList = newsEntities\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">memoryCache <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 newsEntities<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">dao.<\/span><span style=\"color: #6F42C1\">replaceAll<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 news <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> newsEntities<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">cacheAuthorImages<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 newsList <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> newsEntities<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0627\u06af\u0631 \u062f\u0627\u0646\u0644\u0648\u062f \u06cc\u06a9\u06cc \u0627\u0632 \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0645\u06cc \u0637\u0648\u0644 \u0628\u06a9\u0634\u0647\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0635\u0644\u06cc \u062e\u0628\u0631\u0647\u0627 \u0642\u0628\u0644\u0627\u064b \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0646. \u0627\u0644\u0628\u062a\u0647 \u062f\u0631 \u0646\u0633\u062e\u0647 \u0641\u0639\u0644\u06cc \u062a\u0627\u0628\u0639 \u062f\u0631\u06cc\u0627\u0641\u062a \u062a\u0627 \u067e\u0627\u06cc\u0627\u0646 Preload \u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646\u062a\u0638\u0631 \u0645\u06cc\u200c\u0645\u0648\u0646\u0647. \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062d\u0631\u0641\u0647\u200c\u0627\u06cc\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0647 Preload \u0631\u0648 \u062f\u0631 Coroutine \u062c\u062f\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f \u062a\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u062e\u0628\u0627\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u062a\u06a9\u0645\u06cc\u0644 \u062a\u0645\u0627\u0645 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627 <\/strong><strong>AsyncImage<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 Compose \u0627\u0632 \u0627\u06cc\u0646 Composable \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AsyncImage(\n\n\u00a0\u00a0\u00a0 model = news.authorImageUrl,\n\n\u00a0\u00a0 \u00a0contentDescription = \"...\",\n\n\u00a0\u00a0\u00a0 modifier = ...\n\n)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6F42C1\">AsyncImage<\/span><span style=\"color: #24292E\">(<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 model <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> news.authorImageUrl,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0 \u00a0contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #032F62\">&quot;...&quot;<\/span><span style=\"color: #24292E\">,<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 modifier <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">..<\/span><span style=\"color: #24292E\">.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">model \u0647\u0645\u0648\u0646 URL \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 Room \u0627\u0633\u062a. AsyncImage \u0627\u0628\u062a\u062f\u0627 Memory Cache \u0631\u0648 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0628\u0639\u062f Disk Cache \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0627\u06af\u0631 \u062a\u0635\u0648\u06cc\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c \u0633\u0631\u0648\u0631 \u0631\u0648 \u0635\u062f\u0627 \u0645\u06cc\u200c\u0632\u0646\u0647. \u0627\u06cc\u0646 \u0631\u0648\u0646\u062f \u067e\u0634\u062a \u0635\u062d\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u0634\u0647 \u0648 Compose \u0628\u0639\u062f \u0627\u0632 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062e\u0648\u062f\u0634 Recompose \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0628\u0631\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627 <\/strong><strong>ContentScale.Crop<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>contentScale =\n\n\u00a0\u00a0\u00a0 ContentScale.Crop<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">contentScale <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ContentScale.Crop<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0645\u06a9\u0646\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0648 \u0646\u0633\u0628\u062a\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646. Crop \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0637\u0648\u0631\u06cc \u0628\u0632\u0631\u06af \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0641\u0636\u0627\u06cc \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647 \u067e\u0631 \u0628\u0634\u0647 \u0648 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u0628\u06cc\u0631\u0648\u0646 \u0642\u0627\u0628 \u0628\u0631\u0634 \u0628\u062e\u0648\u0631\u0646. \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u062f\u0627\u062e\u0644 \u062f\u0627\u06cc\u0631\u0647 \u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc \u06cc\u0627 \u06a9\u0634\u06cc\u062f\u06af\u06cc \u0646\u0627\u0645\u0646\u0627\u0633\u0628 \u062f\u06cc\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062f\u0627\u06cc\u0631\u0647\u200c\u0627\u06cc \u06a9\u0631\u062f\u0646 \u0639\u06a9\u0633 \u0628\u0627 <\/strong><strong>clip<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062f\u0627\u06cc\u0631\u0647\u200c\u0627\u06cc \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Modifier\n\n\u00a0\u00a0\u00a0 .size(52.dp)\n\n\u00a0\u00a0\u00a0 .clip(CircleShape)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">Modifier<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">size<\/span><span style=\"color: #24292E\">(<\/span><span style=\"color: #005CC5\">52<\/span><span style=\"color: #24292E\">.dp)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .<\/span><span style=\"color: #6F42C1\">clip<\/span><span style=\"color: #24292E\">(CircleShape)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">size \u0627\u0646\u062f\u0627\u0632\u0647 \u062b\u0627\u0628\u062a \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 clip \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0628\u06cc\u0631\u0648\u0646 \u0634\u06a9\u0644 \u062f\u0627\u06cc\u0631\u0647 \u0631\u0648 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u062a\u0631\u062a\u06cc\u0628 Modifier\u0647\u0627 \u0645\u0647\u0645\u0647\u061b \u0627\u0628\u062a\u062f\u0627 \u0627\u0646\u062f\u0627\u0632\u0647 \u0645\u0634\u062e\u0635 \u0645\u06cc\u0634\u0647 \u0648 \u0628\u0639\u062f \u0647\u0645\u0627\u0646 \u0645\u062d\u062f\u0648\u062f\u0647 \u0628\u0647 \u0634\u06a9\u0644 \u062f\u0627\u06cc\u0631\u0647 \u0628\u0631\u0634 \u0645\u06cc\u200c\u062e\u0648\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0646\u0642\u0634 <\/strong><strong>contentDescription<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 AsyncImage \u0646\u0648\u0634\u062a\u06cc\u0645:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>contentDescription =\n\n\u00a0\u00a0\u00a0 \"\u062a\u0635\u0648\u06cc\u0631 ${news.authorName}\"<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">contentDescription <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #032F62\">&quot;\u062a\u0635\u0648\u06cc\u0631 ${news.authorName}&quot;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u062a\u0646 \u0628\u0631\u0627\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u0645\u062b\u0644 Screen Reader \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647. \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0646\u0645\u06cc\u200c\u0628\u06cc\u0646\u0647\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062a\u0648\u0636\u06cc\u062d \u0627\u0648\u0646 \u0631\u0648 \u0628\u0634\u0646\u0648\u0647. \u0628\u0631\u0627\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0627\u0645\u0644\u0627\u064b \u062a\u0632\u0626\u06cc\u0646\u06cc \u0645\u06cc\u0634\u0647 \u0645\u0642\u062f\u0627\u0631 null \u06af\u0630\u0627\u0634\u062a\u060c \u0627\u0645\u0627 \u0639\u06a9\u0633 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u062e\u0628\u0631 \u0645\u0631\u0628\u0648\u0637\u0647 \u0648 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u0634\u062a\u0646\u0634 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646<\/strong><strong> Memory Cache <\/strong><strong>\u062e\u0628\u0631\u0647\u0627 \u0648 \u062a\u0635\u0627\u0648\u06cc\u0631<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u0628\u0639 \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc Memory Cache \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>memoryCache =\n\n\u00a0\u00a0\u00a0 emptyList()\n\ncontext\n\n\u00a0\u00a0\u00a0 .imageLoader\n\n\u00a0\u00a0\u00a0 .memoryCache\n\n\u00a0\u00a0\u00a0 ?.clear()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">memoryCache <\/span><span style=\"color: #D73A49\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 <\/span><span style=\"color: #6F42C1\">emptyList<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">context<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .imageLoader<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .memoryCache<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ?.<\/span><span style=\"color: #6F42C1\">clear<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0637 \u0627\u0648\u0644 \u0644\u06cc\u0633\u062a \u0645\u062a\u0646\u06cc \u062e\u0628\u0631\u0647\u0627 \u0631\u0648 \u0627\u0632 RAM \u067e\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u062e\u0637 \u062f\u0648\u0645 \u062a\u0635\u0627\u0648\u06cc\u0631 Coil \u0631\u0648 \u0627\u0632 RAM \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0627\u0637\u0644\u0627\u0639\u0627\u062a Room \u0648 Disk Cache \u062a\u0635\u0627\u0648\u06cc\u0631 \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0648\u0646\u0646\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a\u060c \u062d\u0627\u0644\u062a \u0622\u0641\u0644\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0648 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u062f\u0627\u0626\u0645\u06cc \u06af\u0648\u0634\u06cc \u0628\u062e\u0648\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0645\u0627\u0645<\/strong><strong> Cache<\/strong><strong>\u0647\u0627<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0648 \u062d\u0630\u0641 \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Memory Cache<\/strong> \u062e\u0628\u0631\u0647\u0627<br><strong>Room Cache<\/strong> \u062e\u0628\u0631\u0647\u0627<br><strong>Coil Memory Cache<\/strong> \u062a\u0635\u0627\u0648\u06cc\u0631<br><strong>Coil Disk Cache<\/strong> \u062a\u0635\u0627\u0648\u06cc\u0631<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u062f \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Coil:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.5rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#fff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>imageLoader\n\n\u00a0\u00a0\u00a0 .memoryCache\n\n\u00a0\u00a0\u00a0 ?.clear()\n\nimageLoader\n\n\u00a0\u00a0\u00a0 .diskCache\n\n\u00a0\u00a0\u00a0 ?.clear()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292E\">imageLoader<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .memoryCache<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ?.<\/span><span style=\"color: #6F42C1\">clear<\/span><span style=\"color: #24292E\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">imageLoader<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 .diskCache<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">\u00a0\u00a0\u00a0 ?.<\/span><span style=\"color: #6F42C1\">clear<\/span><span style=\"color: #24292E\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u0627\u0628\u0639\u060c \u062f\u0631 \u062d\u0627\u0644\u062a \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0628\u0631\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646 \u0648 \u0646\u0647 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0627\u0648\u06cc\u0631. \u0627\u06cc\u0646 \u062f\u06a9\u0645\u0647 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u062a\u0641\u0627\u0648\u062a Cache \u0645\u0648\u0642\u062a \u0648 \u062f\u0627\u0626\u0645\u06cc \u062f\u0631 \u062a\u0645\u0631\u06cc\u0646 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0686\u0631\u0627<\/strong><strong> Cache<\/strong><strong>\u0647\u0627 \u0628\u0627 <\/strong><strong>?.clear <\/strong><strong>\u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061f<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc memoryCache \u0648 diskCache \u0645\u0645\u06a9\u0646\u0647 Nullable \u0628\u0627\u0634\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" dir=\"ltr\">memoryCache?.clear()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0645\u0644\u06af\u0631 ?. \u0645\u06cc\u06af\u0647 \u0641\u0642\u0637 \u0627\u06af\u0631 Cache \u0648\u0627\u0642\u0639\u0627\u064b \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u060c \u062a\u0627\u0628\u0639 clear() \u0631\u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646. \u0627\u06af\u0631 ImageLoader \u0628\u062f\u0648\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 Cache\u0647\u0627 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647\u200c\u062c\u0627\u06cc Crash \u06a9\u0631\u062f\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0637 \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u0631\u0641\u062a\u0627\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644\u062a \u0622\u0641\u0644\u0627\u06cc\u0646<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Room \u0641\u0642\u0637 URL \u0631\u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u060c \u0627\u0645\u0627 Coil \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0633\u0631\u0627\u063a Cache \u062e\u0648\u062f\u0634 \u0645\u06cc\u0631\u0647. \u0627\u06af\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0642\u0628\u0644\u0627\u064b Preload \u06cc\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u062f\u0627\u062e\u0644 Disk Cache \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647 \u0648 \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Room<br>\u2193<br>URL \u062a\u0635\u0648\u06cc\u0631<br>Coil<br>\u2193<br>\u0628\u0631\u0631\u0633\u06cc Memory Cache<br>\u2193<br>\u0628\u0631\u0631\u0633\u06cc Disk Cache<br>\u2193<br>\u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0647\u06cc\u0686\u200c\u0648\u0642\u062a \u062f\u0627\u0646\u0644\u0648\u062f \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u0647 \u06cc\u0627 Disk Cache \u067e\u0627\u06a9 \u0634\u062f\u0647 \u0628\u0627\u0634\u0647\u060c \u062f\u0627\u0634\u062a\u0646 URL \u062f\u0627\u062e\u0644 Room \u0628\u0647\u200c\u062a\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a \u0648 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644\u062a \u0622\u0641\u0644\u0627\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a<\/strong><strong> Cache First <\/strong><strong>\u062e\u0628\u0631 \u0648<\/strong><strong> Cache <\/strong><strong>\u062e\u0648\u062f<\/strong><strong> Coil<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc Cache First \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062a\u0635\u0645\u06cc\u0645 Repository \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u0646\u0628\u0639 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0628\u0631\u0647\u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Memory \u062e\u0628\u0631\u0647\u0627<br>\u06cc\u0627<br>Room<br>\u06cc\u0627<br>Network<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 Coil \u0628\u0631\u0627\u06cc \u0647\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0627\u062e\u0644\u06cc \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062e\u0648\u062f\u0634 \u0631\u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">Memory \u062a\u0635\u0648\u06cc\u0631<br>\u2193<br>Disk \u062a\u0635\u0648\u06cc\u0631<br>\u2193<br>Network \u062a\u0635\u0648\u06cc\u0631<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0648 \u0633\u06cc\u0633\u062a\u0645 \u062c\u062f\u0627 \u0647\u0633\u062a\u0646\u060c \u0648\u0644\u06cc \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u062a\u062c\u0631\u0628\u0647 \u0622\u0641\u0644\u0627\u06cc\u0646 \u06a9\u0627\u0645\u0644\u200c\u062a\u0631\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u0646. Repository \u0645\u062a\u0646 \u0648 URL \u062e\u0628\u0631 \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 Coil \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0648\u0646 URL \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0645\u0644<\/strong><strong> Cache <\/strong><strong>\u062f\u0631 \u067e\u0631\u0648\u0698\u0647<\/strong><strong><\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u0648\u0641\u0642 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u0627\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc\u0634\u0647:<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">MySQL<br>\u2193<br>PHP<br>\u2193<br>JSON \u0634\u0627\u0645\u0644 \u062e\u0628\u0631 \u0648 URL \u062a\u0635\u0648\u06cc\u0631<br>\u2193<br>Retrofit<br>\u2193<br>Memory Cache \u062e\u0628\u0631\u0647\u0627<br>\u2193<br>Room Cache \u062e\u0628\u0631\u0647\u0627 \u0648 URL \u062a\u0635\u0627\u0648\u06cc\u0631<br>\u2193<br>Coil \u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0635\u0627\u0648\u06cc\u0631<br>\u2193<br>Memory \u0648 Disk Cache \u062a\u0635\u0627\u0648\u06cc\u0631<br>\u2193<br>Compose<br>\u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a:<br>Room<br>\u2193<br>\u062e\u0628\u0631\u0647\u0627 \u0648 URL \u062a\u0635\u0627\u0648\u06cc\u0631<br>\u2193<br>Compose<br>Coil Disk Cache<br>\u2193<br>\u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646<br>\u2193<br>Compose<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u067e\u0631\u0648\u0698\u0647 \u0641\u0642\u0637 \u0645\u062a\u0646 \u062e\u0628\u0631 \u0631\u0648 \u0622\u0641\u0644\u0627\u06cc\u0646 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647\u061b \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646 \u0647\u0645 \u0628\u0639\u062f \u0627\u0632 \u06cc\u06a9 \u0628\u0627\u0631 \u062f\u0627\u0646\u0644\u0648\u062f\u060c \u0627\u0632 Cache \u062f\u0627\u062e\u0644\u06cc Coil \u0642\u0627\u0628\u0644 \u0646\u0645\u0627\u06cc\u0634 \u0647\u0633\u062a\u0646.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"726\" height=\"663\" src=\"https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image.png\" alt=\"\" class=\"wp-image-6328\" srcset=\"https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image.png 726w, https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image-300x274.png 300w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">\u062f\u06cc\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Cache \u0628\u0627 Device Explorer<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 Room \u0648 Coil \u062f\u0627\u062e\u0644 \u06af\u0648\u0634\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062a\u0648\u06cc \u067e\u0648\u0634\u0647\u200c\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0645\u062b\u0644 <code>Download<\/code> \u06cc\u0627 <code>Pictures<\/code> \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u061b \u0628\u0644\u06a9\u0647 \u062f\u0627\u062e\u0644 \u0641\u0636\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc \u062e\u0648\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0646. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0628\u0627 File Manager \u0645\u0639\u0645\u0648\u0644\u06cc \u06af\u0648\u0634\u06cc \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u062f\u0627\u062e\u0644 Android Studio \u0627\u0632 \u0645\u0633\u06cc\u0631 <code>View \u2192 Tool Windows \u2192 Device Explorer<\/code> \u0648\u0627\u0631\u062f Device Explorer \u0645\u06cc\u200c\u0634\u06cc\u0645 \u0648 \u067e\u0648\u0634\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0648 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0645\u0633\u06cc\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0648 \u062d\u0627\u0644\u062a\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/data\/data\/com.iman.helloiman<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/data\/user\/0\/com.iman.helloiman<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 <code>databases<\/code> \u0641\u0627\u06cc\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 Room \u0631\u0648 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>databases\/news_cache.db<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646\u0647 \u06a9\u0646\u0627\u0631 \u0627\u0648\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06a9\u0645\u06a9\u06cc \u0645\u062b\u0644 <code>news_cache.db-wal<\/code> \u0648 <code>news_cache.db-shm<\/code> \u0647\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646. \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u062b\u0644 \u0639\u0646\u0648\u0627\u0646 \u062e\u0628\u0631\u060c \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u060c \u0646\u0627\u0645 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0648 \u0622\u062f\u0631\u0633 \u0639\u06a9\u0633 \u062f\u0627\u062e\u0644 \u0647\u0645\u06cc\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0646. \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0631\u062f\u06cc\u0641\u200c\u0647\u0627 \u0648 \u0633\u062a\u0648\u0646\u200c\u0647\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>App Inspection \u2192 Database Inspector<\/code> \u0631\u0627\u062d\u062a\u200c\u062a\u0631\u0647\u060c \u0686\u0648\u0646 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u062c\u062f\u0648\u0644 Room \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0648 \u0645\u0631\u062a\u0628 \u0646\u0634\u0648\u0646 \u0645\u06cc\u200c\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u0648\u0627\u0642\u0639\u06cc \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 Coil \u062f\u0627\u0646\u0644\u0648\u062f \u0648 Cache \u06a9\u0631\u062f\u0647\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0627\u062e\u0644 \u067e\u0648\u0634\u0647 <code>cache<\/code> \u0628\u0631\u0646\u0627\u0645\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/data\/data\/com.iman.helloiman\/cache<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u0645 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0639\u06a9\u0633 \u062f\u0627\u062e\u0644 \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u062b\u0644 <code>profile1.png<\/code> \u0646\u06cc\u0633\u062a \u0648 \u0645\u0645\u06a9\u0646\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0631\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u0646\u0627\u0645\u0641\u0647\u0648\u0645 \u06cc\u0627 Hash\u0634\u062f\u0647 \u062f\u06cc\u062f\u0647 \u0628\u0634\u0647\u060c \u0686\u0648\u0646 Coil \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0627\u062e\u0644\u06cc \u062e\u0648\u062f\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. \u067e\u0633 Room \u0622\u062f\u0631\u0633 \u0639\u06a9\u0633 \u0631\u0648 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 \u062e\u0648\u062f \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0627\u062e\u0644 Disk Cache \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Coil \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0647. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0641\u0642\u0637 Cache \u0647\u0633\u062a\u0646 \u0648 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u06a9\u0645\u0628\u0648\u062f \u062d\u0627\u0641\u0638\u0647 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0627\u0648\u0646\u200c\u0647\u0627 \u0631\u0648 \u067e\u0627\u06a9 \u06a9\u0646\u0647\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u0628\u0627\u06cc\u062f Cache \u0631\u0648 \u0645\u062d\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u0626\u0645\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u0628\u062f\u0648\u0646\u06cc\u0645.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"651\" src=\"https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image-1-1024x651.png\" alt=\"\" class=\"wp-image-6331\" srcset=\"https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image-1-1024x651.png 1024w, https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image-1-300x191.png 300w, https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image-1-768x488.png 768w, https:\/\/notes.yummybrands.studio\/wp-content\/uploads\/2026\/07\/image-1.png 1084w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0639\u06a9\u0633\u200c\u0647\u0627 \u0647\u0645\u06cc\u0646\u200c\u062c\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0646<\/strong>. \u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627\u0632 \u06a9\u0631\u062f\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>com.iman.helloiman\n\u2514\u2500\u2500 cache\n    \u2514\u2500\u2500 coil3_disk_cache<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0648\u0646 Disk Cache \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Coil \u0647\u0633\u062a. \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0633\u0645\u200c\u0647\u0627\u06cc \u0628\u0644\u0646\u062f \u0648 \u0646\u0627\u0645\u0641\u0647\u0648\u0645 \u0645\u062b\u0644:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>137cae0f693d...\n24c2f9a848835...\n698fa0631505...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0648\u0646 \u0639\u06a9\u0633\u200c\u0647\u0627\u06cc Cache\u0634\u062f\u0647 \u0647\u0633\u062a\u0646. Coil \u0641\u0627\u06cc\u0644 \u0631\u0648 \u0628\u0627 \u0627\u0633\u0645 \u0627\u0635\u0644\u06cc \u0645\u062b\u0644 <code>profile1.png<\/code> \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647\u061b URL \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u0628\u0647 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f Hash\u0634\u062f\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u062a\u0627 \u062e\u0648\u062f\u0634 \u0628\u062a\u0648\u0646\u0647 Cache \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u0647. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0627\u06cc\u0646\u062c\u0627 \u0639\u06a9\u0633 \u0631\u0648 \u0628\u0627 \u0627\u0633\u0645 \u0627\u0635\u0644\u06cc\u0634 \u0646\u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc. \u0641\u0627\u06cc\u0644 <code>journal<\/code> \u0647\u0645 \u062f\u0641\u062a\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a Cache\u0640\u0647 \u0648 Coil \u062f\u0627\u062e\u0644\u0634 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0686\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646 \u0648 \u0622\u062e\u0631\u06cc\u0646 \u0628\u0627\u0631 \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0646.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0647\u0631 \u0627\u0633\u0645 \u062f\u0648 \u0628\u0627\u0631 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u0634\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Coil \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a Cache\u060c \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a Cache \u0648 \u062e\u0648\u062f \u062f\u0627\u062f\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0648 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0647. \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0627\u0646\u062a\u0647\u0627\u06cc \u0627\u0633\u0645 \u06a9\u0627\u0645\u0644 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0639\u0631\u0636 \u06a9\u0645 \u067e\u0646\u062c\u0631\u0647 \u062f\u06cc\u062f\u0647 \u0646\u0645\u06cc\u0634\u0647. \u0645\u062b\u0644\u0627\u064b \u0645\u0645\u06a9\u0646\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>137cae0f693d....0\n137cae0f693d....1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u0627\u0646\u0628\u06cc Cache \u0648 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0627\u062f\u0647 \u0648\u0627\u0642\u0639\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0637\u0648\u0631 \u062e\u0648\u062f \u0639\u06a9\u0633 Cache\u0634\u062f\u0647 \u0631\u0648 \u0628\u0628\u06cc\u0646\u06cc\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Hash\u0634\u062f\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646 \u0648 \u0627\u0632 \u0646\u0648\u0627\u0631 \u0628\u0627\u0644\u0627\u06cc Device Explorer \u0631\u0648\u06cc \u0622\u06cc\u06a9\u0646 \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u0632\u0646\u060c \u06cc\u0627 \u0631\u0627\u0633\u062a\u200c\u06a9\u0644\u06cc\u06a9 \u06a9\u0646 \u0648 \u06af\u0632\u06cc\u0646\u0647\u200c\u0627\u06cc \u0634\u0628\u06cc\u0647 \u0627\u06cc\u0646 \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Save As\nExport\nDownload<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 \u0631\u0648 \u0631\u0648\u06cc \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646. \u0627\u0632 \u0628\u06cc\u0646 \u062f\u0648 \u0641\u0627\u06cc\u0644 \u0647\u0645\u200c\u0646\u0627\u0645\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0641\u0627\u06cc\u0644\u06cc \u06a9\u0647 \u062d\u062c\u0645 \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u0647 \u062e\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a. \u0686\u0648\u0646 \u0641\u0627\u06cc\u0644 \u067e\u0633\u0648\u0646\u062f \u0646\u062f\u0627\u0631\u0647\u060c \u0628\u0639\u062f \u0627\u0632 \u062f\u0627\u0646\u0644\u0648\u062f \u06cc\u06a9 \u06a9\u067e\u06cc \u0627\u0632\u0634 \u0628\u06af\u06cc\u0631 \u0648 \u0627\u0646\u062a\u0647\u0627\u06cc \u0627\u0633\u0645\u0634 \u0627\u06cc\u0646 \u0631\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.png<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>137cae0f693d...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0628\u062f\u06cc\u0644 \u0628\u0634\u0647 \u0628\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>137cae0f693d....png<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0628\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u06cc\u0627 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0646\u0645\u0627\u06cc\u0634 \u0639\u06a9\u0633 \u0628\u0627\u0632\u0634 \u06a9\u0646. \u0627\u06af\u0631 \u0628\u0627\u0632 \u0646\u0634\u062f\u060c \u0641\u0627\u06cc\u0644 \u062f\u0648\u0645 \u0647\u0645\u0648\u0646 Hash \u0631\u0648 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u061b \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u0648\u0646\u200c\u0647\u0627 \u0645\u0645\u06a9\u0646\u0647 \u0641\u0627\u06cc\u0644 Metadata \u0628\u0627\u0634\u0647\u060c \u0646\u0647 \u062e\u0648\u062f \u062a\u0635\u0648\u06cc\u0631.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631\u062a \u062b\u0627\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0648\u0644\u060c \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0648 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>databases\n\u251c\u2500\u2500 news_cache.db\n\u251c\u2500\u2500 news_cache.db-shm\n\u2514\u2500\u2500 news_cache.db-wal<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0628\u0631\u0647\u0627 \u0648 URL \u0639\u06a9\u0633\u200c\u0647\u0627 \u062f\u0627\u062e\u0644 Room \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0646.<br>\u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u062f\u0648\u0645 \u0647\u0645 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cache\n\u2514\u2500\u2500 coil3_disk_cache\n    \u251c\u2500\u2500 \u0686\u0646\u062f \u0641\u0627\u06cc\u0644 Hash\u0634\u062f\u0647\n    \u2514\u2500\u2500 journal<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u062e\u0648\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0647\u0645 \u0648\u0627\u0631\u062f Disk Cache \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Coil \u0634\u062f\u0646. \u067e\u0633 \u067e\u0631\u0648\u0698\u0647 \u0627\u0644\u0627\u0646 \u0647\u0631 \u062f\u0648 \u0628\u062e\u0634 Cache \u0631\u0648 \u062f\u0631\u0633\u062a \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Room\n\u2192 \u0645\u062a\u0646 \u062e\u0628\u0631\u060c \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0648 URL \u062a\u0635\u0648\u06cc\u0631\n\nCoil Disk Cache\n\u2192 \u0641\u0627\u06cc\u0644 \u0648\u0627\u0642\u0639\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0648\u0627\u0642\u0639 \u0646\u062f\u06cc\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0633\u0645 <code>profile1.png<\/code> \u0637\u0628\u06cc\u0639\u06cc \u0627\u0633\u062a\u061b \u0686\u0648\u0646 Coil \u0639\u0645\u062f\u0627\u064b \u0627\u0633\u0645 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Cache \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647 \u0648 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0627\u062e\u0644\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u0634\u0648\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631\u0633 \u06f1\u0633\u0627\u062e\u062a \u0627\u0648\u0644\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627 Jetpack Compose \u062a\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0648\u0627\u0631\u062f \u067e\u0631\u0648\u0698\u0647 \u0627\u0635\u0644\u06cc \u0642\u06cc\u0645\u062a\u200c\u0628\u0627\u0646 \u0628\u0634\u06cc\u0645\u060c \u0628\u0647\u062a\u0631\u0647 \u0628\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u06a9\u0648\u0686\u06a9 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u060c \u067e\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc Compose \u0631\u0648 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0645\u0639\u0645\u0627\u0631\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06cc\u0627 API \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0647\u062f\u0641 \u0641\u0642\u0637 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631\u06cc\u0645 \u0686\u0637\u0648\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0648\u0627\u0642\u0639\u06cc \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0628\u0633\u0627\u0632\u06cc\u0645. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[15],"tags":[],"class_list":["post-6251","post","type-post","status-publish","format-standard","hentry","category-15"],"_links":{"self":[{"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=\/wp\/v2\/posts\/6251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6251"}],"version-history":[{"count":40,"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=\/wp\/v2\/posts\/6251\/revisions"}],"predecessor-version":[{"id":6346,"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=\/wp\/v2\/posts\/6251\/revisions\/6346"}],"wp:attachment":[{"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/notes.yummybrands.studio\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}