|
1 | 1 | import PhoneNumberInput from "@/components/phone-number-input"; |
2 | 2 | import PhotoPicker from "@/components/photo-picker"; |
3 | 3 | import { additionalFields } from "@/constants/AdditionalFields"; |
4 | | -import { getAvatarColor } from "@/lib/avatar-utils"; |
5 | 4 | import { getCountryByCode } from "@/lib/countries"; |
6 | | -import { Contact, ContactFormData } from "@/lib/types"; |
| 5 | +import { ContactFormData } from "@/lib/types"; |
7 | 6 | import { getFormattedDate, getVisibleFields, trimDialCode } from "@/lib/utils"; |
8 | 7 | import useContactStore from "@/store/contactStore"; |
9 | 8 | import { router, useLocalSearchParams } from "expo-router"; |
@@ -34,34 +33,27 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; |
34 | 33 | export default function EditContactScreen() { |
35 | 34 | const theme = useTheme(); |
36 | 35 | const insets = useSafeAreaInsets(); |
37 | | - const { contact: contactParam, index } = useLocalSearchParams(); |
| 36 | + const { fullPhoneNumber: originalFullPhoneNumber, index } = |
| 37 | + useLocalSearchParams(); |
| 38 | + const contacts = useContactStore.use.contacts(); |
38 | 39 |
|
39 | | - // Parse the contact from JSON string |
40 | | - const contact: Contact | null = contactParam |
41 | | - ? JSON.parse(contactParam as string) |
42 | | - : null; |
43 | | - |
44 | | - const originalFullPhoneNumber = contact?.fullPhoneNumber; |
45 | | - const letter = contact?.name?.charAt(0) || "?"; |
| 40 | + // Find the contact by fullPhoneNumber |
| 41 | + const contact = contacts.find( |
| 42 | + (c) => c.fullPhoneNumber === originalFullPhoneNumber |
| 43 | + ); |
46 | 44 |
|
47 | 45 | const updateContact = useContactStore.use.updateContact(); |
48 | 46 | const updateError = useContactStore.use.updateContactError(); |
49 | 47 | const clearUpdateError = useContactStore.use.clearUpdateError(); |
50 | 48 | const [visible, setVisible] = useState(false); |
51 | 49 | const [visibleFields, setVisibleFields] = useState<Set<string>>(() => |
52 | | - getVisibleFields(contact) |
| 50 | + getVisibleFields(contact!) |
53 | 51 | ); |
54 | 52 | const [showDatePicker, setShowDatePicker] = useState(false); |
55 | 53 | const [selectedDate, setSelectedDate] = useState(() => |
56 | 54 | contact?.birthday ? new Date(contact.birthday) : new Date() |
57 | 55 | ); |
58 | 56 |
|
59 | | - const [avatarBackgroundColor, avatarTextColor] = getAvatarColor( |
60 | | - letter, |
61 | | - theme.dark, |
62 | | - Number(index) |
63 | | - ); |
64 | | - |
65 | 57 | const { |
66 | 58 | control, |
67 | 59 | handleSubmit, |
@@ -204,7 +196,7 @@ export default function EditContactScreen() { |
204 | 196 | const fullPhoneNumber = |
205 | 197 | data.phoneNumber.dialCode + data.phoneNumber.number.trim(); |
206 | 198 |
|
207 | | - const success = await updateContact(originalFullPhoneNumber!, { |
| 199 | + const success = await updateContact(originalFullPhoneNumber as string, { |
208 | 200 | name: data.name.trim(), |
209 | 201 | fullPhoneNumber: fullPhoneNumber, |
210 | 202 | phoneNumber: data.phoneNumber.number.trim(), |
|
0 commit comments