mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 13:38:01 -05:00
Merge pull request #101 from tw-mosip/INJI-25
As a resident, when I go to the "Inji tour guide" section, I should be taken to the "Intro Slides"
This commit is contained in:
@@ -99,7 +99,7 @@
|
||||
"yesConfirm": "نعم ، أؤكد",
|
||||
"no": "لا"
|
||||
},
|
||||
"RemoveVcWarningOverlay":{
|
||||
"RemoveVcWarningOverlay": {
|
||||
"alert": "يرجى تأكيد",
|
||||
"removeWarning": "هل تريد حقًا إزالة البطاقة",
|
||||
"confirm": "يتأكد",
|
||||
@@ -136,7 +136,7 @@
|
||||
"language": "لغة",
|
||||
"aboutInji": "حول إنجي",
|
||||
"credentialRegistry": "سجل الاعتماد",
|
||||
"errorMessage": "تم إدخال عنوان URL غير صحيح. الرجاء إدخال عنوان URL صالح للمتابعة." ,
|
||||
"errorMessage": "تم إدخال عنوان URL غير صحيح. الرجاء إدخال عنوان URL صالح للمتابعة.",
|
||||
"injiTourGuide": "مرشد إنجي السياحي",
|
||||
"logout": "تسجيل خروج",
|
||||
"resetInjiProps": "إعادة تعيين دعائم إنجي ..."
|
||||
@@ -252,7 +252,7 @@
|
||||
"title": "بيانات التطبيق غير كافية",
|
||||
"message": "لا يمكنك إضافة أو استلام بطاقات لأن بيانات التطبيق ممتلئة. امسح بيانات التطبيق للمتابعة."
|
||||
},
|
||||
"vcIsTampered":{
|
||||
"vcIsTampered": {
|
||||
"title": "تم العبث ببيانات VC",
|
||||
"message": "تتم إزالة VCs المتأثر من التطبيق"
|
||||
}
|
||||
@@ -267,7 +267,9 @@
|
||||
"stepThreeText": "شارك بطاقاتك بأمان وبطريقة خالية من المتاعب واستفد من الخدمات المتنوعة.",
|
||||
"stepFourTitle": "مصادقة خالية من المتاعب",
|
||||
"stepFourText": "قم بمصادقة نفسك بسهولة باستخدام بيانات الاعتماد الرقمية المخزنة.",
|
||||
"stepFourButton": "البدء",
|
||||
"getStarted": "البدء",
|
||||
"goBack": "عُد",
|
||||
"back": "خلف",
|
||||
"skip": "يتخطى",
|
||||
"next": "التالي"
|
||||
},
|
||||
@@ -370,7 +372,7 @@
|
||||
},
|
||||
"storageLimitReached": {
|
||||
"title": "بيانات التطبيق غير كافية",
|
||||
"message":"لا يمكنك إضافة أو استلام بطاقات لأن بيانات التطبيق ممتلئة. امسح بيانات التطبيق للمتابعة."
|
||||
"message": "لا يمكنك إضافة أو استلام بطاقات لأن بيانات التطبيق ممتلئة. امسح بيانات التطبيق للمتابعة."
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
@@ -432,7 +434,7 @@
|
||||
},
|
||||
"storageLimitReached": {
|
||||
"title": "بيانات التطبيق غير كافية",
|
||||
"message":"لا يمكنك مشاركة البطاقات لأن بيانات التطبيق ممتلئة. امسح بيانات التطبيق للمتابعة."
|
||||
"message": "لا يمكنك مشاركة البطاقات لأن بيانات التطبيق ممتلئة. امسح بيانات التطبيق للمتابعة."
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
|
||||
@@ -267,7 +267,9 @@
|
||||
"stepThreeText": "Share your cards securely in a hassle free way and avail various services.",
|
||||
"stepFourTitle": "Hassle free authentication",
|
||||
"stepFourText": "Authenticate yourself with ease using the stored digital credential.",
|
||||
"stepFourButton": "Get Started",
|
||||
"getStarted": "Get Started",
|
||||
"goBack": "Go Back",
|
||||
"back": "Back",
|
||||
"skip": "Skip",
|
||||
"next": "Next"
|
||||
},
|
||||
|
||||
@@ -267,7 +267,9 @@
|
||||
"stepThreeText": "Kapag nabuo na, ang card ay ligtas na iniimbak sa iyong mobile.",
|
||||
"stepFourTitle": "Walang problema sa pagpapatotoo",
|
||||
"stepFourText": "I-authenticate ang iyong sarili nang madali gamit ang nakaimbak na digital na kredensyal.",
|
||||
"stepFourButton": "Magsimulas",
|
||||
"getStarted": "Magsimula",
|
||||
"goBack": "bumalik ka",
|
||||
"back": "Bumalik",
|
||||
"skip": "Laktawan",
|
||||
"next": "Susunod"
|
||||
},
|
||||
|
||||
@@ -265,7 +265,9 @@
|
||||
"stepThreeText": "परेशानी मुक्त तरीके से अपने कार्ड सुरक्षित रूप से साझा करें और विभिन्न सेवाओं का लाभ उठाएं।",
|
||||
"stepFourTitle": "परेशानी मुक्त प्रमाणीकरण",
|
||||
"stepFourText": "संग्रहीत डिजिटल क्रेडेंशियल का उपयोग करके आसानी से स्वयं को प्रमाणित करें।",
|
||||
"stepFourButton": "शुरू हो जाओ",
|
||||
"getStarted": "शुरू करें",
|
||||
"goBack": "वापस जाओ",
|
||||
"back": "पीछे",
|
||||
"skip": "छोडना",
|
||||
"next": "अगला"
|
||||
},
|
||||
|
||||
@@ -263,7 +263,9 @@
|
||||
"stepThreeText": "ನಿಮ್ಮ ಕಾರ್ಡ್ಗಳನ್ನು ಜಗಳ ಮುಕ್ತ ರೀತಿಯಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ವಿವಿಧ ಸೇವೆಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.",
|
||||
"stepFourTitle": "ಜಗಳ ಮುಕ್ತ ದೃಢೀಕರಣ",
|
||||
"stepFourText": "ಸಂಗ್ರಹಿಸಿದ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸುಲಭವಾಗಿ ನಿಮ್ಮನ್ನು ದೃಢೀಕರಿಸಿ.",
|
||||
"stepFourButton": "ಪ್ರಾರಂಭಿಸಿ",
|
||||
"getStarted": "ಪ್ರಾರಂಭಿಸಿ",
|
||||
"goBack": "ಹಿಂದೆ ಹೋಗು",
|
||||
"back": "ಹಿಂದೆ",
|
||||
"skip": "ಬಿಟ್ಟುಬಿಡಿ",
|
||||
"next": "ಮುಂದೆ"
|
||||
},
|
||||
|
||||
@@ -296,6 +296,7 @@
|
||||
}
|
||||
},
|
||||
"RequestScreen": {
|
||||
"receiveCard": "Recibir tarjeta",
|
||||
"bluetoothDenied": "Por favor, activa el Bluetooth para poder solicitar la tarjeta",
|
||||
"bluetoothStateAndroid": "Por favor, activa el Bluetooth desde la configuración rápida para admitir el intercambio local",
|
||||
"bluetoothStateIos": "Por favor, activa el Bluetooth desde el centro de control para admitir el intercambio local",
|
||||
|
||||
@@ -263,7 +263,9 @@
|
||||
"stepThreeText": "தொந்தரவு இல்லாத வகையில் உங்கள் கார்டுகளைப் பாதுகாப்பாகப் பகிர்ந்து, பல்வேறு சேவைகளைப் பெறுங்கள்.",
|
||||
"stepFourTitle": "தொந்தரவு இல்லாத அங்கீகாரம்",
|
||||
"stepFourText": "சேமிக்கப்பட்ட டிஜிட்டல் நற்சான்றிதழைப் பயன்படுத்தி உங்களை எளிதாக அங்கீகரிக்கவும்.",
|
||||
"stepFourButton": "தொடங்குங்கள்",
|
||||
"getStarted": "தொடங்குங்கள்",
|
||||
"goBack": "திரும்பி போ",
|
||||
"back": "மீண்டும்",
|
||||
"skip": "தவிர்க்கவும்",
|
||||
"next": "அடுத்தது"
|
||||
},
|
||||
|
||||
@@ -44,6 +44,8 @@ const model = createModel(
|
||||
) => ({
|
||||
credentialRegistryResponse: credentialRegistryResponse,
|
||||
}),
|
||||
INJI_TOUR_GUIDE: () => ({}),
|
||||
BACK: () => ({}),
|
||||
CANCEL: () => ({}),
|
||||
},
|
||||
}
|
||||
@@ -84,6 +86,7 @@ export const settingsMachine = model.createMachine(
|
||||
},
|
||||
},
|
||||
idle: {
|
||||
entry: ['injiTourGuide'],
|
||||
on: {
|
||||
TOGGLE_BIOMETRIC_UNLOCK: {
|
||||
actions: ['toggleBiometricUnlock', 'storeContext'],
|
||||
@@ -126,6 +129,20 @@ export const settingsMachine = model.createMachine(
|
||||
},
|
||||
},
|
||||
},
|
||||
injiTourGuide: {
|
||||
on: {
|
||||
INJI_TOUR_GUIDE: {
|
||||
target: 'showInjiTourGuide',
|
||||
},
|
||||
},
|
||||
},
|
||||
showInjiTourGuide: {
|
||||
on: {
|
||||
BACK: {
|
||||
target: 'idle',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -18,12 +18,18 @@ export interface Typegen0 {
|
||||
resetInjiProps: 'done.invoke.settings.resetInjiProps:invocation[0]';
|
||||
};
|
||||
'missingImplementations': {
|
||||
actions: never;
|
||||
actions: 'injiTourGuide';
|
||||
delays: never;
|
||||
guards: never;
|
||||
services: never;
|
||||
};
|
||||
'eventsCausingActions': {
|
||||
injiTourGuide:
|
||||
| 'BACK'
|
||||
| 'CANCEL'
|
||||
| 'STORE_RESPONSE'
|
||||
| 'done.invoke.settings.resetInjiProps:invocation[0]'
|
||||
| 'error.platform.settings.resetInjiProps:invocation[0]';
|
||||
requestStoredContext: 'xstate.init';
|
||||
resetCredentialRegistry: 'CANCEL' | 'UPDATE_CREDENTIAL_REGISTRY';
|
||||
setContext: 'STORE_RESPONSE';
|
||||
@@ -50,6 +56,12 @@ export interface Typegen0 {
|
||||
'eventsCausingServices': {
|
||||
resetInjiProps: 'UPDATE_CREDENTIAL_REGISTRY';
|
||||
};
|
||||
'matchesStates': 'idle' | 'init' | 'resetInjiProps' | 'storingDefaults';
|
||||
'matchesStates':
|
||||
| 'idle'
|
||||
| 'init'
|
||||
| 'injiTourGuide'
|
||||
| 'resetInjiProps'
|
||||
| 'showInjiTourGuide'
|
||||
| 'storingDefaults';
|
||||
'tags': never;
|
||||
}
|
||||
|
||||
@@ -68,11 +68,19 @@ export const IntroSlidersScreen: React.FC<RootRouteProps> = (props) => {
|
||||
flex: 1,
|
||||
alignItems: 'flex-end',
|
||||
}}>
|
||||
<Button
|
||||
type="plain"
|
||||
title={t('skip')}
|
||||
onPress={controller.NEXT}
|
||||
/>
|
||||
{controller.isPasscodeSet() ? (
|
||||
<Button
|
||||
type="plain"
|
||||
title={t('skip')}
|
||||
onPress={controller.NEXT}
|
||||
/>
|
||||
) : (
|
||||
<Button
|
||||
type="plain"
|
||||
title={t('back')}
|
||||
onPress={controller.BACK}
|
||||
/>
|
||||
)}
|
||||
</Column>
|
||||
</Row>
|
||||
<Image source={item.image} />
|
||||
@@ -122,7 +130,7 @@ export const IntroSlidersScreen: React.FC<RootRouteProps> = (props) => {
|
||||
align="center"
|
||||
color="#FFFFFF"
|
||||
margin="15 0 0 0">
|
||||
{t('stepFourButton')}
|
||||
{controller.isPasscodeSet() ? t('getStarted') : t('goBack')}
|
||||
</Text>
|
||||
</LinearGradient>
|
||||
</View>
|
||||
@@ -144,7 +152,9 @@ export const IntroSlidersScreen: React.FC<RootRouteProps> = (props) => {
|
||||
}}
|
||||
dotStyle={{ backgroundColor: Theme.Colors.dotColor, marginBottom: 90 }}
|
||||
renderItem={renderItem}
|
||||
onDone={() => controller.NEXT()}
|
||||
onDone={() =>
|
||||
controller.isPasscodeSet() ? controller.NEXT() : controller.BACK()
|
||||
}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
|
||||
@@ -13,7 +13,7 @@ import { Modal } from '../../components/ui/Modal';
|
||||
import { CREDENTIAL_REGISTRY_EDIT } from 'react-native-dotenv';
|
||||
import { AboutInji } from './AboutInji';
|
||||
import { EditableListItem } from '../../components/EditableListItem';
|
||||
import { RequestRouteProps } from '../../routes';
|
||||
import { RequestRouteProps, RootRouteProps } from '../../routes';
|
||||
import { ReceivedCards } from './ReceivedCards';
|
||||
|
||||
const LanguageSetting: React.FC = () => {
|
||||
@@ -47,9 +47,9 @@ const LanguageSetting: React.FC = () => {
|
||||
);
|
||||
};
|
||||
|
||||
export const SettingScreen: React.FC<SettingProps & RequestRouteProps> = (
|
||||
props
|
||||
) => {
|
||||
export const SettingScreen: React.FC<
|
||||
SettingProps & RootRouteProps & RequestRouteProps
|
||||
> = (props) => {
|
||||
const { t } = useTranslation('SettingScreen');
|
||||
const controller = useSettingsScreen(props);
|
||||
|
||||
@@ -154,13 +154,11 @@ export const SettingScreen: React.FC<SettingProps & RequestRouteProps> = (
|
||||
progress={controller.isResetInjiProps}
|
||||
/>
|
||||
)}
|
||||
{/*
|
||||
|
||||
<ListItem
|
||||
topDivider
|
||||
bottomDivider
|
||||
onPress={() => {
|
||||
Linking.openURL(helpUrl);
|
||||
}}>
|
||||
onPress={() => controller.INJI_TOUR_GUIDE()}>
|
||||
<Icon
|
||||
type={'antdesign'}
|
||||
name={'book'}
|
||||
@@ -176,7 +174,6 @@ export const SettingScreen: React.FC<SettingProps & RequestRouteProps> = (
|
||||
</ListItem.Title>
|
||||
</ListItem.Content>
|
||||
</ListItem>
|
||||
*/}
|
||||
|
||||
<ListItem onPress={controller.LOGOUT}>
|
||||
<Icon
|
||||
|
||||
@@ -27,9 +27,9 @@ import {
|
||||
import { GlobalContext } from '../../shared/GlobalContext';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Platform } from 'react-native';
|
||||
import { RequestRouteProps } from '../../routes';
|
||||
import { RequestRouteProps, RootRouteProps } from '../../routes';
|
||||
|
||||
export function useSettingsScreen(props: RequestRouteProps) {
|
||||
export function useSettingsScreen(props: RootRouteProps & RequestRouteProps) {
|
||||
const { appService } = useContext(GlobalContext);
|
||||
const authService = appService.children.get('auth');
|
||||
const settingsService = appService.children.get('settings');
|
||||
@@ -143,6 +143,12 @@ export function useSettingsScreen(props: RequestRouteProps) {
|
||||
setIsVisible(false);
|
||||
},
|
||||
|
||||
INJI_TOUR_GUIDE: () => {
|
||||
settingsService.send(SettingsEvents.INJI_TOUR_GUIDE()),
|
||||
props.navigation.navigate('IntroSliders'),
|
||||
setIsVisible(false);
|
||||
},
|
||||
|
||||
TOGGLE_BIOMETRIC: (enable: boolean) =>
|
||||
settingsService.send(SettingsEvents.TOGGLE_BIOMETRIC_UNLOCK(enable)),
|
||||
|
||||
|
||||
@@ -7,7 +7,10 @@ import {
|
||||
selectPasscode,
|
||||
selectSettingUp,
|
||||
} from '../machines/auth';
|
||||
import { selectBiometricUnlockEnabled } from '../machines/settings';
|
||||
import {
|
||||
SettingsEvents,
|
||||
selectBiometricUnlockEnabled,
|
||||
} from '../machines/settings';
|
||||
import { RootRouteProps } from '../routes';
|
||||
import { GlobalContext } from '../shared/GlobalContext';
|
||||
|
||||
@@ -18,6 +21,15 @@ export function useWelcomeScreen(props: RootRouteProps) {
|
||||
|
||||
const isSettingUp = useSelector(authService, selectSettingUp);
|
||||
const passcode = useSelector(authService, selectPasscode);
|
||||
|
||||
const isPasscodeSet = () => {
|
||||
if (passcode) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
const biometrics = useSelector(authService, selectBiometrics);
|
||||
const isLanguagesetup = useSelector(authService, selectLanguagesetup);
|
||||
const isBiometricUnlockEnabled = useSelector(
|
||||
@@ -28,6 +40,7 @@ export function useWelcomeScreen(props: RootRouteProps) {
|
||||
return {
|
||||
isSettingUp,
|
||||
isLanguagesetup,
|
||||
isPasscodeSet,
|
||||
NEXT: () => {
|
||||
authService.send(AuthEvents.NEXT()), props.navigation.navigate('Auth');
|
||||
},
|
||||
@@ -35,6 +48,10 @@ export function useWelcomeScreen(props: RootRouteProps) {
|
||||
authService.send(AuthEvents.SELECT()),
|
||||
props.navigation.navigate('IntroSliders');
|
||||
},
|
||||
BACK: () => {
|
||||
settingsService.send(SettingsEvents.BACK()),
|
||||
props.navigation.navigate('Main');
|
||||
},
|
||||
unlockPage: () => {
|
||||
// prioritize biometrics
|
||||
if (!isSettingUp && isBiometricUnlockEnabled && biometrics !== '') {
|
||||
|
||||
Reference in New Issue
Block a user