aboutsummaryrefslogtreecommitdiff
path: root/src/utils/common.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/common.ts')
-rw-r--r--src/utils/common.ts40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/utils/common.ts b/src/utils/common.ts
index 95e77f64..cfd9244a 100644
--- a/src/utils/common.ts
+++ b/src/utils/common.ts
@@ -1,11 +1,17 @@
import AsyncStorage from '@react-native-community/async-storage';
import moment from 'moment';
-import {Linking} from 'react-native';
+import {ImageSourcePropType, Linking} from 'react-native';
import {getAll} from 'react-native-contacts';
-import {BROWSABLE_SOCIAL_URLS, TOGGLE_BUTTON_TYPE} from '../constants';
+import {
+ BADGE_DATA,
+ BROWSABLE_SOCIAL_URLS,
+ TOGGLE_BUTTON_TYPE,
+} from '../constants';
import {
ContactType,
NotificationType,
+ UniversityBadge,
+ UniversityBadgeDisplayType,
UniversityBadgeType,
UniversityType,
} from './../types/types';
@@ -197,3 +203,33 @@ export const validateImageLink = async (url: string | undefined) => {
return false;
});
};
+
+/**
+ * Turns a list of badges into display badges (just a badge with img) by
+ * looking up the img source from our badge asset lookup constant.
+ *
+ * WARNING: Assumes a small list of badges, complexity goes up exponentially.
+ *
+ * @param badges list of university badges
+ * @param university university of which all the badges belong
+ * @returns list of display badges
+ */
+export const badgesToDisplayBadges = (
+ badges: UniversityBadge[],
+ university: UniversityType,
+) => {
+ const badgeSet: Set<string> = new Set(badges.map((b) => b.category + b.name));
+ const badgeToImgMap: Record<string, ImageSourcePropType> = {};
+ BADGE_DATA[university].forEach((category) => {
+ category.data.forEach((badgeInfo) => {
+ const key = category.title + badgeInfo.badgeName;
+ if (badgeSet.has(key)) {
+ badgeToImgMap[key] = badgeInfo.badgeImage;
+ }
+ });
+ });
+ return <UniversityBadgeDisplayType[]>badges.map((b) => ({
+ ...b,
+ img: badgeToImgMap[b.category + b.name],
+ }));
+};