From 183f44be3b698209d53ba31513b36c38c04b786a Mon Sep 17 00:00:00 2001 From: PhatNH4 Date: Wed, 27 Nov 2024 10:19:38 +0700 Subject: [PATCH] [ZMA-1026] update name & avatar permission request flow (policy 6.1) --- src/pages/cart/delivery.tsx | 6 +----- src/pages/cart/person-picker.tsx | 27 ++++++++++++++++++++------- src/pages/index/welcome.tsx | 11 ----------- src/pages/profile.tsx | 16 ++++++++++++++-- src/state.ts | 12 ++---------- 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/pages/cart/delivery.tsx b/src/pages/cart/delivery.tsx index 9c135bd..24896ab 100644 --- a/src/pages/cart/delivery.tsx +++ b/src/pages/cart/delivery.tsx @@ -40,11 +40,7 @@ export const Delivery: FC = () => { }, { left: , - right: ( - }> - - - ), + right: , }, { left: , diff --git a/src/pages/cart/person-picker.tsx b/src/pages/cart/person-picker.tsx index f61d796..fd4caa7 100644 --- a/src/pages/cart/person-picker.tsx +++ b/src/pages/cart/person-picker.tsx @@ -1,21 +1,34 @@ import { ListItem } from "components/list-item"; import React, { FC } from "react"; -import { useRecoilValue, useSetRecoilState } from "recoil"; +import { + useRecoilValue, + useRecoilValueLoadable, + useSetRecoilState, +} from "recoil"; import { phoneState, requestPhoneTriesState, userState } from "state"; export const PersonPicker: FC = () => { - const user = useRecoilValue(userState); + const user = useRecoilValueLoadable(userState); const phone = useRecoilValue(phoneState); - if (!phone) { - return ; - } - - return ; + return ( + + ); }; export const RequestPersonPickerPhone: FC = () => { const retry = useSetRecoilState(requestPhoneTriesState); + const phone = useRecoilValueLoadable(phoneState); + + if (phone.state === "hasValue" && phone.contents) { + return ; + } + return ( retry((r) => r + 1)} diff --git a/src/pages/index/welcome.tsx b/src/pages/index/welcome.tsx index 120f826..b3aaafd 100644 --- a/src/pages/index/welcome.tsx +++ b/src/pages/index/welcome.tsx @@ -1,14 +1,10 @@ import React, { FC } from "react"; import { Box, Header, Text } from "zmp-ui"; -import { useRecoilValueLoadable } from "recoil"; -import { userState } from "state"; import logo from "static/logo.png"; import appConfig from "../../../app-config.json"; import { getConfig } from "utils/config"; export const Welcome: FC = () => { - const user = useRecoilValueLoadable(userState); - return (
{ /> {appConfig.app.title} - {user.state === "hasValue" ? ( - - Welcome, {user.contents.name}! - - ) : ( - ... - )} ) as unknown as string diff --git a/src/pages/profile.tsx b/src/pages/profile.tsx index a3da990..0411c27 100644 --- a/src/pages/profile.tsx +++ b/src/pages/profile.tsx @@ -3,11 +3,23 @@ import { Box, Header, Icon, Page, Text } from "zmp-ui"; import subscriptionDecor from "static/subscription-decor.svg"; import { ListRenderer } from "components/list-renderer"; import { useToBeImplemented } from "hooks"; +import { useRecoilCallback } from "recoil"; +import { userState } from "state"; const Subscription: FC = () => { - const onClick = useToBeImplemented(); + const requestUserInfo = useRecoilCallback( + ({ snapshot }) => + async () => { + const userInfo = await snapshot.getPromise(userState); + console.warn("Các bên tích hợp có thể sử dụng userInfo ở đây...", { + userInfo, + }); + }, + [] + ); + return ( - + { - try { - const { userInfo } = await getUserInfo({ autoRequestPermission: true }); - return userInfo; - } catch (error) { - return { - id: "", - avatar: "", - name: "Người dùng Zalo", - }; - } + const { userInfo } = await getUserInfo({ autoRequestPermission: true }); + return userInfo; }, });