UNPKG

mychips-react-sdk

Version:
252 lines (221 loc) 6.72 kB
import AsyncStorage from '@react-native-async-storage/async-storage'; import type { MCGenderEnum } from '../domain/MCGenderEnum'; export class UserService { private static USER_ID_KEY = 'user_id'; private static GAID_KEY = 'gaid'; private static IDFA_KEY = 'idfa'; private static GENDER_KEY = 'gender'; private static AGE_KEY = 'age'; private static EMAIL_KEY = 'email'; private static CURRENCY_KEY = 'partner_virtual_currency'; private static AFF_SUB1_KEY = 'aff_sub1'; private static AFF_SUB2_KEY = 'aff_sub2'; private static AFF_SUB3_KEY = 'aff_sub3'; private static AFF_SUB4_KEY = 'aff_sub4'; private static AFF_SUB5_KEY = 'aff_sub5'; async setId(userId: string): Promise<void> { try { await AsyncStorage.setItem(UserService.USER_ID_KEY, userId); } catch (error) { console.error('Failed to set user ID', error); } } async getOrCreateId(): Promise<string> { try { let userId = await AsyncStorage.getItem(UserService.USER_ID_KEY); if (!userId) { userId = this.generateUUID(); await this.setId(userId); } return userId; } catch (error) { console.error('Failed to get or create user ID', error); throw error; } } async setGaid(gaid: string): Promise<void> { try { await AsyncStorage.setItem(UserService.GAID_KEY, gaid); } catch (error) { console.error('Failed to set GAID', error); } } async getGaid(): Promise<string> { try { const gaid = await AsyncStorage.getItem(UserService.GAID_KEY); return gaid || ''; } catch (error) { console.error('Failed to get GAID', error); return ''; } } async setIdfa(idfa: string): Promise<void> { try { await AsyncStorage.setItem(UserService.IDFA_KEY, idfa); } catch (error) { console.error('Failed to set IDFA', error); } } async getIdfa(): Promise<string> { try { const idfa = await AsyncStorage.getItem(UserService.IDFA_KEY); return idfa || ''; } catch (error) { console.error('Failed to get IDFA', error); return ''; } } async setAge(age: number): Promise<void> { try { await AsyncStorage.setItem(UserService.AGE_KEY, age.toString()); } catch (error) { console.error('Failed to set age', error); } } async getAge(): Promise<number> { try { const age = await AsyncStorage.getItem(UserService.AGE_KEY); return age ? parseInt(age, 10) : -1; } catch (error) { console.error('Failed to get age', error); return -1; } } async setGender(gender: MCGenderEnum): Promise<void> { try { await AsyncStorage.setItem(UserService.GENDER_KEY, gender.toString()); } catch (error) { console.error('Failed to set gender', error); } } async getGender(): Promise<string> { try { const gender = await AsyncStorage.getItem(UserService.GENDER_KEY); return gender || ''; } catch (error) { console.error('Failed to get gender', error); return ''; } } async setEmail(email: string): Promise<void> { try { await AsyncStorage.setItem(UserService.EMAIL_KEY, email); } catch (error) { console.error('Failed to set email', error); } } async getEmail(): Promise<string> { try { const email = await AsyncStorage.getItem(UserService.EMAIL_KEY); return email || ''; } catch (error) { console.error('Failed to get email', error); return ''; } } async setCurrentTotalCurrency(vc: number): Promise<void> { try { await AsyncStorage.setItem(UserService.CURRENCY_KEY, vc.toString()); } catch (error) { console.error('Failed to set currency', error); } } async getCurrentTotalCurrency(): Promise<number> { try { const currency = await AsyncStorage.getItem(UserService.CURRENCY_KEY); return currency ? parseFloat(currency) : -1; } catch (error) { console.error('Failed to get currency', error); return -1; } } // aff_sub1 ~ aff_sub5 async setAffSub1(sub1: string): Promise<void> { try { await AsyncStorage.setItem(UserService.AFF_SUB1_KEY, sub1 ?? ''); } catch (error) { console.error('Error saving aff_sub1:', error); } } async getAffSub1(): Promise<string> { try { const sub1 = await AsyncStorage.getItem(UserService.AFF_SUB1_KEY); return sub1 ?? ''; } catch (error) { console.error('Error reading aff_sub1:', error); return ''; } } async setAffSub2(sub2: string): Promise<void> { try { await AsyncStorage.setItem(UserService.AFF_SUB2_KEY, sub2 ?? ''); } catch (error) { console.error('Error saving aff_sub2:', error); } } async getAffSub2(): Promise<string> { try { const sub2 = await AsyncStorage.getItem(UserService.AFF_SUB2_KEY); return sub2 ?? ''; } catch (error) { console.error('Error reading aff_sub2:', error); return ''; } } async setAffSub3(sub3: string): Promise<void> { try { await AsyncStorage.setItem(UserService.AFF_SUB3_KEY, sub3 ?? ''); } catch (error) { console.error('Error saving aff_sub3:', error); } } async getAffSub3(): Promise<string> { try { const sub3 = await AsyncStorage.getItem(UserService.AFF_SUB3_KEY); return sub3 ?? ''; } catch (error) { console.error('Error reading aff_sub3:', error); return ''; } } async setAffSub4(sub4: string): Promise<void> { try { await AsyncStorage.setItem(UserService.AFF_SUB4_KEY, sub4 ?? ''); } catch (error) { console.error('Error saving aff_sub4:', error); } } async getAffSub4(): Promise<string> { try { const sub4 = await AsyncStorage.getItem(UserService.AFF_SUB4_KEY); return sub4 ?? ''; } catch (error) { console.error('Error reading aff_sub4:', error); return ''; } } async setAffSub5(sub5: string): Promise<void> { try { await AsyncStorage.setItem(UserService.AFF_SUB5_KEY, sub5 ?? ''); } catch (error) { console.error('Error saving aff_sub5:', error); } } async getAffSub5(): Promise<string> { try { const sub5 = await AsyncStorage.getItem(UserService.AFF_SUB5_KEY); return sub5 ?? ''; } catch (error) { console.error('Error reading aff_sub5:', error); return ''; } } private generateUUID(): string { // Generate a simple UUID return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { const r = (Math.random() * 16) | 0; const v = c === 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); } }