Merge branch 'develop' of https://github.com/mosip/inji into ui-revamp

This commit is contained in:
Sri Kanth Kola
2023-06-27 10:35:41 +05:30
23 changed files with 174 additions and 153 deletions

View File

@@ -107,8 +107,10 @@ jobs:
- name: Run Build using Fastlane
run: |
cd android/scripts
./run-fastlane.sh
cd android
yes | sudo gem install bundler
yes | sudo fastlane install_plugins
bundle exec fastlane android_build_verify
env:
DEBUG_KEYSTORE_ALIAS: androiddebugkey
DEBUG_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_DEBUG_STOREPASS}}'

View File

@@ -83,29 +83,19 @@ jobs:
FIREBASE_SECRET: ${{ secrets.GPG_SECRET }}
- name: Generate keystore
run: |
keytool \
-genkey -v \
-storetype PKCS12 \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-storepass $DEBUG_KEYSTORE_PASSWORD \
-keypass $DEBUG_KEYSTORE_PASSWORD \
-alias androiddebugkey \
-keystore android/app/debug.keystore \
-dname "CN=io.mosip.residentapp,OU=,O=,L=,S=,C=US"
env:
DEBUG_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_DEBUG_STOREPASS}}'
run: |
echo "$ANDROID_KEYSTORE_FILE" > release.keystore.b64
base64 -d -i release.keystore.b64 > android/app/release.keystore
env:
ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }}
- name: Export variables for keystore
run: |
cd android/app
export DEBUG_KEYSTORE_ALIAS=androiddebugkey
export DEBUG_KEYSTORE_PASSWORD=$DEBUG_KEYSTORE_PASSWORD
export RELEASE_KEYSTORE_ALIAS=androidreleasekey
export RELEASE_KEYSTORE_PASSWORD=$RELEASE_KEYSTORE_PASSWORD
env:
DEBUG_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_DEBUG_STOREPASS}}'
RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}'
- name: Bump version code
uses: chkfung/android-version-actions@v1.2.1
@@ -120,13 +110,13 @@ jobs:
env:
MIMOTO_HOST: ${{ github.event.inputs.backendServiceUrl }}
APPLICATION_THEME: ${{ github.event.inputs.theme }}
DEBUG_KEYSTORE_ALIAS: androiddebugkey
DEBUG_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_DEBUG_STOREPASS}}'
RELEASE_KEYSTORE_ALIAS: androidreleasekey
RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}'
CREDENTIAL_REGISTRY_EDIT: ${{ github.event.inputs.registry_edit }}
- name: Upload Artifact to Actions
uses: actions/upload-artifact@v3.1.1
with:
name: Inji
path: android/app/build/outputs/apk/newlogic/debug/
path: android/app/build/outputs/apk/mosip/release/
retention-days: 10

View File

@@ -203,6 +203,10 @@ android {
signingConfig signingConfigs.debug
}
release {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
// Caution! In production, you need to generate your own keystore file.
// see https://reactnative.dev/docs/signed-apk-android.
signingConfig signingConfigs.release

View File

@@ -1,8 +1,15 @@
default_platform(:android)
desc "Verify Build for Android"
lane :android_build do
lane :android_build_verify do
gradle(
task: "assembleNewlogicDebug",
task: "assembleMosipDebug",
)
end
desc "Build for Android"
lane :android_build do
gradle(
task: "assembleMosipRelease",
)
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -1,4 +1,4 @@
import React, { useContext, useRef, useState } from 'react';
import React, { useContext, useRef } from 'react';
import { useInterpret, useSelector } from '@xstate/react';
import { Pressable } from 'react-native';
import { ActorRefFrom } from 'xstate';
@@ -12,13 +12,16 @@ import {
selectEmptyWalletBindingId,
selectStoreError,
selectIsSavingFailedInIdle,
VcItemEvents,
selectKebabPopUp,
} from '../machines/vcItem';
import { VcItemEvents } from '../machines/vcItem';
import { ErrorMessageOverlay } from '../components/MessageOverlay';
import { Theme } from './ui/styleUtils';
import { GlobalContext } from '../shared/GlobalContext';
import { VcItemContent } from './VcItemContent';
import { VcItemActivationStatus } from './VcItemActivationStatus';
import { Row } from './ui';
import { KebabPopUp } from './KebabPopUp';
export const VcItem: React.FC<VcItemProps> = (props) => {
const { appService } = useContext(GlobalContext);
@@ -35,7 +38,9 @@ export const VcItem: React.FC<VcItemProps> = (props) => {
const emptyWalletBindingId = useSelector(service, selectEmptyWalletBindingId);
const storeError = useSelector(service, selectStoreError);
const isSavingFailedInIdle = useSelector(service, selectIsSavingFailedInIdle);
const isKebabPopUp = useSelector(service, selectKebabPopUp);
const DISMISS = () => service.send(VcItemEvents.DISMISS());
const KEBAB_POPUP = () => service.send(VcItemEvents.KEBAB_POPUP());
let storeErrorTranslationPath = 'errors.savingFailed';
@@ -47,6 +52,7 @@ export const VcItem: React.FC<VcItemProps> = (props) => {
const generatedOn = useSelector(service, selectGeneratedOn);
const tag = useSelector(service, selectTag);
return (
<React.Fragment>
<Pressable
@@ -64,23 +70,32 @@ export const VcItem: React.FC<VcItemProps> = (props) => {
tag={tag}
selectable={props.selectable}
selected={props.selected}
iconName={props.iconName && props.iconName}
iconType={props.iconType && props.iconType}
onPress={() => props.onPress(service)}
service={service}
iconName={props.iconName}
iconType={props.iconType}
onPress={() => props.onPress(service)}
/>
{props.activeTab !== 'receivedVcsTab' &&
props.activeTab != 'sharingVcScreen' && (
<VcItemActivationStatus
verifiableCredential={verifiableCredential}
emptyWalletBindingId={emptyWalletBindingId}
onPress={() => props.onPress(service)}
showOnlyBindedVc={props.showOnlyBindedVc}
<Row crossAlign="center">
{props.activeTab !== 'receivedVcsTab' &&
props.activeTab != 'sharingVcScreen' && (
<VcItemActivationStatus
verifiableCredential={verifiableCredential}
emptyWalletBindingId={emptyWalletBindingId}
onPress={() => props.onPress(service)}
showOnlyBindedVc={props.showOnlyBindedVc}
/>
)}
<Pressable onPress={KEBAB_POPUP}>
<KebabPopUp
vcKey={props.vcKey}
iconName="dots-three-horizontal"
iconType="entypo"
isVisible={isKebabPopUp}
onDismiss={DISMISS}
service={service}
/>
)}
</Pressable>
</Row>
</Pressable>
<ErrorMessageOverlay
isVisible={isSavingFailedInIdle}

View File

@@ -1,18 +1,12 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Dimensions, Pressable } from 'react-native';
import { Dimensions } from 'react-native';
import { Icon } from 'react-native-elements';
import { ActorRefFrom } from 'xstate';
import {
VcItemEvents,
selectKebabPopUp,
vcItemMachine,
} from '../machines/vcItem';
import { vcItemMachine } from '../machines/vcItem';
import { VerifiableCredential } from '../types/vc';
import { Row, Text } from './ui';
import { Theme } from './ui/styleUtils';
import { KebabPopUp } from './KebabPopUp';
import { useSelector } from '@xstate/react';
const WalletUnverifiedIcon: React.FC = () => {
return (
@@ -64,19 +58,6 @@ const WalletUnverifiedActivationDetails: React.FC<
}
children={t('offlineAuthDisabledHeader')}></Text>
</Row>
{props.verifiableCredential && (
<Pressable onPress={() => props.onPress()}>
<KebabPopUp
vcKey={props.vcKey}
iconName="dots-three-horizontal"
iconType="entypo"
isVisible={props.showPopUp}
onDismiss={() => props.onDismiss()}
service={props.service}
/>
</Pressable>
)}
</Row>
);
};
@@ -108,19 +89,6 @@ const WalletVerifiedActivationDetails: React.FC<WalletVerifiedDetailsProps> = (
}
children={t('profileAuthenticated')}></Text>
</Row>
{props.verifiableCredential && (
<Pressable onPress={() => props.onPress()}>
<KebabPopUp
vcKey={props.vcKey}
iconName="dots-three-horizontal"
iconType="entypo"
isVisible={props.showPopUp}
onDismiss={() => props.onDismiss()}
service={props.service}
/>
</Pressable>
)}
</Row>
);
};
@@ -128,29 +96,18 @@ const WalletVerifiedActivationDetails: React.FC<WalletVerifiedDetailsProps> = (
export const VcItemActivationStatus: React.FC<VcItemActivationStatusProps> = (
props
) => {
const isKebabPopUp = useSelector(props.service, selectKebabPopUp);
const KEBAB_POPUP = () => props.service.send(VcItemEvents.KEBAB_POPUP());
const DISMISS = () => props.service.send(VcItemEvents.DISMISS());
return (
<Row>
{props.emptyWalletBindingId ? (
<WalletUnverifiedActivationDetails
verifiableCredential={props.verifiableCredential}
onPress={KEBAB_POPUP}
onDismiss={DISMISS}
showPopUp={isKebabPopUp}
service={props.service}
vcKey={props.vcKey}
onPress={props.onPress}
/>
) : (
<WalletVerifiedActivationDetails
verifiableCredential={props.verifiableCredential}
showOnlyBindedVc={props.showOnlyBindedVc}
onPress={KEBAB_POPUP}
onDismiss={DISMISS}
showPopUp={isKebabPopUp}
service={props.service}
vcKey={props.vcKey}
onPress={props.onPress}
/>
)}
</Row>
@@ -159,28 +116,18 @@ export const VcItemActivationStatus: React.FC<VcItemActivationStatusProps> = (
interface VcItemActivationStatusProps {
showOnlyBindedVc: boolean;
onPress: () => void;
onPress: (vcRef?: ActorRefFrom<typeof vcItemMachine>) => void;
verifiableCredential: VerifiableCredential;
emptyWalletBindingId: boolean;
service: any;
vcKey: string;
}
interface WalletVerifiedDetailsProps {
showOnlyBindedVc: boolean;
onPress: () => void;
onDismiss: () => void;
onPress: (vcRef?: ActorRefFrom<typeof vcItemMachine>) => void;
verifiableCredential: VerifiableCredential;
showPopUp: boolean;
service: any;
vcKey: string;
}
interface WalletUnVerifiedDetailsProps {
onPress: () => void;
onDismiss: () => void;
onPress: (vcRef?: ActorRefFrom<typeof vcItemMachine>) => void;
verifiableCredential: VerifiableCredential;
showPopUp: boolean;
service: any;
vcKey: string;
}

View File

@@ -1,6 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Image, ImageBackground } from 'react-native';
import { Image, ImageBackground, View } from 'react-native';
import { getLocalizedField } from '../i18n';
import { VerifiableCredential } from '../types/vc';
import { RotatingIcon } from './RotatingIcon';
@@ -9,8 +9,6 @@ import VerifiedIcon from './VerifiedIcon';
import { Column, Row, Text } from './ui';
import { Theme } from './ui/styleUtils';
import { CheckBox, Icon } from 'react-native-elements';
import { ActorRefFrom } from 'xstate';
import { vcItemMachine } from '../machines/vcItem';
const getDetails = (arg1, arg2, verifiableCredential) => {
if (arg1 === 'Status') {
@@ -188,6 +186,9 @@ export const VcItemContent: React.FC<VcItemContentProps> = (props) => {
/>
</Column>
</Row>
{!props.verifiableCredential && (
<RotatingIcon name="sync" color={Theme.Colors.rotatingIcon} />
)}
</Column>
<VcItemTags tag={props.tag} />
</ImageBackground>

View File

@@ -66,6 +66,12 @@ export const Column = createLayout('column');
export const Centered = createLayout('column', 'center', 'center');
export const HorizontallyCentered = createLayout(
'column',
'flex-start',
'center'
);
interface LayoutProps {
fill?: boolean;
align?: FlexStyle['justifyContent'];

View File

@@ -1,3 +1,3 @@
export { Text } from './Text';
export { Button } from './Button';
export { Row, Column, Centered } from './Layout';
export { Row, Column, Centered, HorizontallyCentered } from './Layout';

View File

@@ -141,6 +141,13 @@ export const DefaultTheme = {
backgroundColor: Colors.Grey6,
borderRadius: 4,
},
loadingCardDetailsContainer: {
flex: 1,
flexDirection: 'row',
backgroundColor: Colors.Grey6,
borderRadius: 4,
},
cardDetailsContainer: {},
bottomTabIconStyle: {
padding: 4,
width: 36,
@@ -280,12 +287,17 @@ export const DefaultTheme = {
justifyContent: 'space-between',
},
logo: {
height: 48,
width: 40,
height: 35,
width: 90,
},
homeCloseCardDetailsHeader: {
flex: 1,
},
cardDetailsHeader: {
flex: 1,
justifyContent: 'space-between',
},
mosipLogoContainer: {},
details: {
width: 290,
marginLeft: 110,

View File

@@ -132,6 +132,18 @@ export const PurpleTheme = {
backgroundColor: Colors.Grey6,
borderRadius: 4,
},
loadingCardDetailsContainer: {
flex: 1,
flexDirection: 'row',
backgroundColor: Colors.Grey6,
borderRadius: 4,
padding: 5,
paddingTop: 0,
},
cardDetailsContainer: {
padding: 10,
paddingTop: 0,
},
bottomTabIconStyle: {
padding: 4,
width: 36,
@@ -161,7 +173,6 @@ export const PurpleTheme = {
flex: 1,
backgroundColor: Colors.Grey6,
borderRadius: 4,
padding: 5,
},
closeDetailsContainer: {
flex: 1,
@@ -206,11 +217,9 @@ export const PurpleTheme = {
shadowOpacity: 0.4,
shadowRadius: 3,
elevation: 4,
padding: 10,
},
backgroundImageContainer: {
flex: 1,
padding: 10,
},
successTag: {
backgroundColor: Colors.Green,
@@ -230,14 +239,35 @@ export const PurpleTheme = {
openDetailsHeader: {
flex: 1,
justifyContent: 'space-between',
paddingLeft: 10,
paddingTop: 10,
},
logo: {
height: 46,
width: 40,
height: 33,
width: 90,
},
homeCloseCardDetailsHeader: {
loadingCardDetailsHeader: {
flex: 1,
justifyContent: 'space-between',
paddingLeft: 5,
paddingTop: 5,
},
cardDetailsHeader: {
flex: 1,
justifyContent: 'space-between',
paddingLeft: 10,
paddingTop: 10,
},
mosipLogoContainer: {
backgroundColor: 'white',
borderBottomLeftRadius: 50,
borderTopLeftRadius: 50,
padding: 2,
alignItems: 'center',
justifyContent: 'center',
},
closecardMosipLogo: {
alignSelf: 'flex-end',
},
closecardMosipLogo: {
alignSelf: 'flex-end',
@@ -249,7 +279,15 @@ export const PurpleTheme = {
},
openDetailsContainer: {
flex: 1,
padding: 10,
padding: 20,
paddingTop: 10,
},
profileIconBg: {
padding: 8,
width: 40,
height: 40,
borderRadius: 6,
backgroundColor: Colors.LightOrange,
},
profileIconBg: {
padding: 8,

View File

@@ -1,21 +1,23 @@
{
"images": [
"images" : [
{
"idiom": "universal",
"filename": "image.png",
"scale": "1x"
"filename" : "splash.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom": "universal",
"scale": "2x"
"filename" : "splash@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom": "universal",
"scale": "3x"
"filename" : "splash@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info": {
"version": 1,
"author": "expo"
"info" : {
"author" : "xcode",
"version" : 1
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -1,13 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="EXPO-VIEWCONTROLLER-1">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="EXPO-VIEWCONTROLLER-1">
<device id="retina5_5" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EXPO-SCENE-1">
<objects>
<viewController storyboardIdentifier="SplashScreenViewController" id="EXPO-VIEWCONTROLLER-1" sceneMemberID="viewController">
@@ -18,22 +20,22 @@
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" insetsLayoutMarginsFromSafeArea="NO" image="SplashScreenBackground" translatesAutoresizingMaskIntoConstraints="NO" id="EXPO-SplashScreenBackground" userLabel="SplashScreenBackground">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
</imageView>
<imageView id="EXPO-SplashScreen" userLabel="SplashScreen" image="SplashScreen" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" clipsSubviews="true" userInteractionEnabled="false" translatesAutoresizingMaskIntoConstraints="false">
<rect key="frame" x="0" y="0" width="414" height="736"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="SplashScreen" translatesAutoresizingMaskIntoConstraints="NO" id="EXPO-SplashScreen" userLabel="SplashScreen">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="Rmq-lb-GrQ"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="top" secondItem="EXPO-ContainerView" secondAttribute="top" id="1gX-mQ-vu6"/>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="leading" secondItem="EXPO-ContainerView" secondAttribute="leading" id="6tX-OG-Sck"/>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="trailing" secondItem="EXPO-ContainerView" secondAttribute="trailing" id="ABX-8g-7v4"/>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="bottom" secondItem="EXPO-ContainerView" secondAttribute="bottom" id="jkI-2V-eW5"/>
<constraint firstItem="EXPO-SplashScreen" firstAttribute="top" secondItem="EXPO-ContainerView" secondAttribute="top" id="83fcb9b545b870ba44c24f0feeb116490c499c52"/>
<constraint firstItem="EXPO-SplashScreen" firstAttribute="leading" secondItem="EXPO-ContainerView" secondAttribute="leading" id="61d16215e44b98e39d0a2c74fdbfaaa22601b12c"/>
<constraint firstItem="EXPO-SplashScreen" firstAttribute="trailing" secondItem="EXPO-ContainerView" secondAttribute="trailing" id="f934da460e9ab5acae3ad9987d5b676a108796c1"/>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="leading" secondItem="EXPO-ContainerView" secondAttribute="leading" id="6tX-OG-Sck"/>
<constraint firstItem="EXPO-SplashScreen" firstAttribute="top" secondItem="EXPO-ContainerView" secondAttribute="top" id="83fcb9b545b870ba44c24f0feeb116490c499c52"/>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="trailing" secondItem="EXPO-ContainerView" secondAttribute="trailing" id="ABX-8g-7v4"/>
<constraint firstItem="EXPO-SplashScreen" firstAttribute="bottom" secondItem="EXPO-ContainerView" secondAttribute="bottom" id="d6a0be88096b36fb132659aa90203d39139deda9"/>
<constraint firstItem="EXPO-SplashScreen" firstAttribute="trailing" secondItem="EXPO-ContainerView" secondAttribute="trailing" id="f934da460e9ab5acae3ad9987d5b676a108796c1"/>
<constraint firstItem="EXPO-SplashScreenBackground" firstAttribute="bottom" secondItem="EXPO-ContainerView" secondAttribute="bottom" id="jkI-2V-eW5"/>
</constraints>
<viewLayoutGuide key="safeArea" id="Rmq-lb-GrQ"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="EXPO-PLACEHOLDER-1" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -42,7 +44,10 @@
</scene>
</scenes>
<resources>
<image name="SplashScreen" width="375" height="812"/>
<image name="SplashScreenBackground" width="1" height="1"/>
<image name="SplashScreen" width="414" height="736"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>
</document>

View File

@@ -214,7 +214,7 @@
"MyVcsTab": {
"generateVc": "Download ID",
"bringYourDigitalID": "Bring Your Digital ID",
"generateVcDescription": "To download your {{vcLabel}} tap Download {{vcLabel}} below",
"generateVcDescription": "To download your card tap Download ID below",
"downloadingYourId": "Downloading your card, this can take upto 5 minutes",
"errors": {
"savingFailed": {

View File

@@ -687,6 +687,10 @@ export const scanMachine =
readyForBluetoothStateCheck: () => true,
}),
setBleError: assign({
bleError: (_context, event) => event.bleError,
}),
setReason: model.assign({
reason: (_context, event) => event.reason,
}),
@@ -1016,18 +1020,7 @@ export const scanMachine =
},
guards: {
isOpenIdQr: (_context, event) => {
// don't scan if QR is offline and Google Nearby is enabled
if (Platform.OS === 'ios' && !event.params.includes('OPENID4VP://'))
return false;
try {
const pk = event.params.split('OPENID4VP://')[1];
return pk != '';
} catch (e) {
return false;
}
},
isOpenIdQr: (_context, event) => event.params.includes('OPENID4VP://'),
isQrLogin: (_context, event) => {
let linkCode = '';

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Logo } from '../components/Logo';
import { Button, Centered, Column, Text } from '../components/ui';
import { Button, HorizontallyCentered, Column } from '../components/ui';
import { Theme } from '../components/ui/styleUtils';
import { RootRouteProps } from '../routes';
import { useWelcomeScreen } from './WelcomeScreenController';
@@ -15,10 +15,9 @@ export const WelcomeScreen: React.FC<RootRouteProps> = (props) => {
fill
padding="32 32 0"
backgroundColor={Theme.Colors.whiteBackgroundColor}>
<Centered fill>
<HorizontallyCentered fill>
<Logo height={182} />
<Text margin="16 0 0 0">{t('title')}</Text>
</Centered>
</HorizontallyCentered>
<Button
margin="0 0 32"
title={controller.isSettingUp ? t('getStarted') : t('unlockApp')}