diff --git a/guard_app/src/screen/ActiveSOSScreen.tsx b/guard_app/src/screen/ActiveSOSScreen.tsx index 84ea6e0f..25c98b1d 100644 --- a/guard_app/src/screen/ActiveSOSScreen.tsx +++ b/guard_app/src/screen/ActiveSOSScreen.tsx @@ -97,7 +97,8 @@ export default function ActiveSOSScreen() { const lastPushedAtRef = useRef(0); const pollRef = useRef | null>(null); const cancelTickRef = useRef | null>(null); - const cancelDeadlineRef = useRef(Date.now() + CANCEL_GRACE_MS); + const [initialDeadline] = useState(() => Date.now() + CANCEL_GRACE_MS); + const cancelDeadlineRef = useRef(initialDeadline); const mountedRef = useRef(true); const closeError = useCallback(() => setErrorState(null), []); diff --git a/guard_app/src/screen/EditProfileScreen.tsx b/guard_app/src/screen/EditProfileScreen.tsx index a56179ab..51678689 100644 --- a/guard_app/src/screen/EditProfileScreen.tsx +++ b/guard_app/src/screen/EditProfileScreen.tsx @@ -40,37 +40,21 @@ export default function EditProfileScreen({ navigation, route }: EditProfileScre const [loading, setLoading] = useState(false); const [profileImage, setProfileImage] = useState(null); - const [licenseImage, setLicenseImage] = useState(null); + const profile = route?.params?.userProfile; + const [formData, setFormData] = useState({ - name: '', - email: '', - phone: '', - street: '', - suburb: '', - state: '', - postcode: '', + name: profile?.name || '', + email: profile?.email || '', + phone: profile?.phone || '', + street: profile?.address?.street || '', + suburb: profile?.address?.suburb || '', + state: profile?.address?.state || '', + postcode: profile?.address?.postcode || '', }); - useEffect(() => { - if (route?.params?.userProfile) { - const profile = route.params.userProfile; - setFormData({ - name: profile.name || '', - email: profile.email || '', - phone: profile.phone || '', - street: profile.address?.street || '', - suburb: profile.address?.suburb || '', - state: profile.address?.state || '', - postcode: profile.address?.postcode || '', - }); - - if (profile.license?.imageUrl) { - setLicenseImage(API_BASE_URL + profile.license.imageUrl); - } - - loadProfileImage(); - } - }, [route?.params?.userProfile]); + const [licenseImage, setLicenseImage] = useState( + profile?.license?.imageUrl ? API_BASE_URL + profile.license.imageUrl : null, + ); const loadProfileImage = async () => { try { @@ -81,6 +65,12 @@ export default function EditProfileScreen({ navigation, route }: EditProfileScre } }; + useEffect(() => { + const init = async () => { + await loadProfileImage(); + }; + init(); + }, []); const handleInputChange = (field: string, value: string) => { setFormData((prev) => ({ ...prev, diff --git a/guard_app/src/screen/ProfileScreen.tsx b/guard_app/src/screen/ProfileScreen.tsx index 7193eda7..879ae80f 100644 --- a/guard_app/src/screen/ProfileScreen.tsx +++ b/guard_app/src/screen/ProfileScreen.tsx @@ -46,6 +46,7 @@ export default function ProfileScreen({ navigation, route }: any) { }; const loadProfileData = async () => { + await Promise.resolve(); try { setLoading(true); setError(null); @@ -60,16 +61,22 @@ export default function ProfileScreen({ navigation, route }: any) { }; useEffect(() => { - loadProfileData(); - loadProfileImage(); + const init = async () => { + loadProfileData(); + loadProfileImage(); + }; + init(); }, []); useEffect(() => { - if (route?.params?.refresh) { - loadProfileData(); - loadProfileImage(); - navigation.setParams({ refresh: false }); - } + const init = async () => { + if (route?.params?.refresh) { + loadProfileData(); + loadProfileImage(); + navigation.setParams({ refresh: false }); + } + }; + init(); }, [navigation, route?.params?.refresh]); const getStatusBadgeStyle = (status: LicenseStatus) => {