Skip to content

Commit

Permalink
fix(congregation): auto generate display name on setting toggle
Browse files Browse the repository at this point in the history
  • Loading branch information
rhahao committed Feb 28, 2025
1 parent c3a42fa commit d8bc9df
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
import { formatDate } from 'date-fns';

const generateDisplayName = (lastname, firstname) => {
if (lastname.length === 0) {
return firstname;
}

if (firstname.length === 0) {
return lastname;
}

const lastNameInitials = lastname
.split(' ')
.map((name) => (name ? name.substring(0, 1) + '.' : ''))
.join(' ');

return `${lastNameInitials} ${firstname}`;
};

const useHourglassImport = () => {
const migrateHourglassPersons = (HOURGLASS_DATA) => {
const ALL_PUBLISHERS = structuredClone(HOURGLASS_DATA.publishers);
Expand Down Expand Up @@ -199,7 +216,7 @@ const useHourglassImport = () => {
updatedAt: new Date().toISOString(),
},
person_display_name: {
value: '',
value: generateDisplayName(record.lastname, record.firstname),
updatedAt: new Date().toISOString(),
},
birth_date: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@ import {
userDataViewState,
} from '@states/settings';
import { dbAppSettingsUpdate } from '@services/dexie/settings';
import { personsActiveState } from '@states/persons';
import { generateDisplayName } from '@utils/common';
import { dbPersonsBulkSave } from '@services/dexie/persons';

const useMeetingForms = () => {
const settings = useRecoilValue(settingsState);
const dataView = useRecoilValue(userDataViewState);
const meetingInitial = useRecoilValue(displayNameMeetingsEnableState);
const persons = useRecoilValue(personsActiveState);

const [displayNameMeeting, setDisplayNameMeeting] = useState(false);

Expand Down Expand Up @@ -38,14 +42,39 @@ const useMeetingForms = () => {

const findRecord = displayName.find((record) => record.type === dataView);

const value = !displayNameMeeting;

if (findRecord) {
findRecord.meetings = !displayNameMeeting;
findRecord.meetings = value;
findRecord.updatedAt = new Date().toISOString();
}

await dbAppSettingsUpdate({
'cong_settings.display_name_enabled': displayName,
});

if (value) {
const personsNoDisplayName = persons.filter(
(record) => record.person_data.person_display_name.value.length === 0
);

const personToUpdate = personsNoDisplayName.map((record) => {
const person = structuredClone(record);
person.person_data.person_display_name = {
value: generateDisplayName(
record.person_data.person_lastname.value,
record.person_data.person_firstname.value
),
updatedAt: new Date().toISOString(),
};

return person;
});

if (personToUpdate.length > 0) {
await dbPersonsBulkSave(personToUpdate);
}
}
};

useEffect(() => {
Expand Down
16 changes: 6 additions & 10 deletions src/utils/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,12 @@ export const generateDisplayName = (lastname: string, firstname: string) => {
return lastname;
}

const txtArray = String(`${lastname} ${firstname}`).split(' ');
let varDisplay = '';
for (let i = 0; i < txtArray.length; i++) {
if (i === txtArray.length - 1) {
varDisplay += txtArray[i];
} else {
varDisplay += txtArray[i].substring(0, 1) + '. ';
}
}
return varDisplay;
const lastNameInitials = lastname
.split(' ')
.map((name) => (name ? name.substring(0, 1) + '.' : ''))
.join(' ');

return `${lastNameInitials} ${firstname}`;
};

export const localStorageGetItem = (key: string) => {
Expand Down

0 comments on commit d8bc9df

Please sign in to comment.