aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/users.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/utils/users.ts b/src/utils/users.ts
index 653c941e..15107c99 100644
--- a/src/utils/users.ts
+++ b/src/utils/users.ts
@@ -19,6 +19,7 @@ import {AppDispatch} from './../store/configureStore';
import {RootState} from './../store/rootReducer';
import {
ProfilePreviewType,
+ CategoryPreviewType,
ProfileType,
ScreenType,
UserType,
@@ -196,3 +197,38 @@ export const addUserToRecentlyViewed = async (user: ProfilePreviewType) => {
console.log(e);
}
};
+
+/*
+ * Stores `category` in AsyncStorage as a recently searched category.
+ */
+export const addCategoryToRecentlySearched = async (
+ category: CategoryPreviewType,
+) => {
+ const recentlySearchedCategoriesKey = '@recently_searched_categories';
+ let categories: CategoryPreviewType[];
+ // retrieve recently-searched categories and set new list
+ try {
+ const categoriesJSON = await AsyncStorage.getItem(
+ recentlySearchedCategoriesKey,
+ );
+ if (categoriesJSON) {
+ categories = JSON.parse(categoriesJSON);
+ // TODO: make this more efficient by comparing shorter key
+ if (categories.find((c) => c.name === category.name)) return;
+ categories.push(category);
+ } else {
+ categories = [category];
+ }
+ // store updated list of recently-searched categories
+ try {
+ AsyncStorage.setItem(
+ recentlySearchedCategoriesKey,
+ JSON.stringify(categories),
+ );
+ } catch (e) {
+ console.log(e);
+ }
+ } catch (e) {
+ console.log(e);
+ }
+};