MCPcopy Create free account
hub / github.com/OpenSIST/OpenSIST.github.io / toggleAnonymous

Function toggleAnonymous

src/Data/UserData.js:327–387  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

325}
326
327export async function toggleAnonymous() {
328 const originalDisplayName = await getDisplayName();
329 const originalMetadata = await getMetadata(originalDisplayName);
330 const originalAvatar = await getAvatar(originalMetadata.Avatar, originalDisplayName, false);
331 const originalApplicantIds = originalMetadata.ApplicantIDs ?? [];
332 const allApplicants = await getApplicants();
333 const applicantRecords = await Promise.all(originalApplicantIds.map((applicantId) => getRecordByApplicant(applicantId)));
334
335 const displayName = (await apiJson(TOGGLE_NICKNAME))['name'];
336 await setDisplayName(displayName);
337
338 await removeCacheValue(metadataCacheKey(originalDisplayName));
339 const updatedApplicantIds = originalApplicantIds.map((applicant) => {
340 return `${displayName}@${applicant.split('@')[1]}`;
341 });
342 const updatedMetadata = {
343 ...originalMetadata,
344 ApplicantIDs: updatedApplicantIds,
345 };
346 await setMetadata(updatedMetadata, displayName);
347 await removeCacheValue(avatarCacheKey(originalDisplayName, originalMetadata.Avatar));
348
349 await setAvatar(originalAvatar, displayName, originalMetadata.Avatar);
350
351 const originalApplicantIdSet = new Set(originalApplicantIds);
352 const updatedApplicantIdSet = new Set(updatedApplicantIds);
353 const updatedApplicants = allApplicants
354 .filter((applicant) => {
355 return originalApplicantIdSet.has(applicant.ApplicantID) || !updatedApplicantIdSet.has(applicant.ApplicantID);
356 })
357 .map((applicant) => {
358 if (originalApplicantIdSet.has(applicant.ApplicantID)) {
359 return {
360 ...applicant,
361 ApplicantID: `${displayName}@${applicant.ApplicantID.split('@')[1]}`,
362 };
363 }
364 return applicant;
365 })
366 await Promise.all([
367 setApplicants(updatedApplicants),
368 removeCacheValue('programs'),
369 ]);
370 await updateCachedRecords((records) => {
371 const updatedRecords = {...records};
372 applicantRecords.forEach((recordGroup) => {
373 Object.entries(recordGroup).forEach(([recordId, content]) => {
374 delete updatedRecords[recordId];
375 const ApplicantID = `${displayName}@${content.ApplicantID.split('@')[1]}`;
376 const updatedRecord = {
377 ...content,
378 ApplicantID,
379 RecordID: `${ApplicantID}|${content.ProgramID}`,
380 };
381 updatedRecords[updatedRecord.RecordID] = updatedRecord;
382 });
383 });
384 return updatedRecords;

Callers 1

actionFunction · 0.90

Calls 14

getApplicantsFunction · 0.90
getRecordByApplicantFunction · 0.90
apiJsonFunction · 0.90
removeCacheValueFunction · 0.90
setApplicantsFunction · 0.90
updateCachedRecordsFunction · 0.90
getDisplayNameFunction · 0.85
getMetadataFunction · 0.85
getAvatarFunction · 0.85
setDisplayNameFunction · 0.85
metadataCacheKeyFunction · 0.85
setMetadataFunction · 0.85

Tested by

no test coverage detected