Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ android {
applicationId 'com.internxt.cloud'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 125
versionName "1.10.0"
versionCode 129
versionName "1.10.2"

buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\""
}
Expand Down
2 changes: 1 addition & 1 deletion android/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<resources>
<string name="app_name">Internxt</string>
<string name="expo_system_ui_user_interface_style" translatable="false">automatic</string>
<string name="expo_runtime_version">1.10.0</string>
<string name="expo_runtime_version">1.10.2</string>
<string name="expo_splash_screen_resize_mode" translatable="false">contain</string>
<string name="expo_splash_screen_status_bar_translucent" translatable="false">false</string>
</resources>
2 changes: 2 additions & 0 deletions assets/lang/strings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,7 @@ const translations = {
SignOutModal: {
title: 'Log out from this account?',
signingOut: 'Saving your latest Photos data…',
signingOutGeneric: 'Signing out…',
},
ConfirmMoveItemModal: {
title: 'Move {0} item(s) from',
Expand Down Expand Up @@ -1868,6 +1869,7 @@ const translations = {
SignOutModal: {
title: '¿Salir de esta cuenta?',
signingOut: 'Guardando tus últimos datos de Photos…',
signingOutGeneric: 'Cerrando sesión…',
},
ConfirmMoveItemModal: {
title: 'Mover {0} item(s) desde',
Expand Down
2 changes: 1 addition & 1 deletion ios/Internxt/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.10.0</string>
<string>1.10.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand Down
2 changes: 1 addition & 1 deletion ios/Internxt/Supporting/Expo.plist
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<key>EXUpdatesLaunchWaitMs</key>
<integer>0</integer>
<key>EXUpdatesRuntimeVersion</key>
<string>1.10.0</string>
<string>1.10.2</string>
<key>EXUpdatesURL</key>
<string>https://u.expo.dev/680f4feb-6315-4a50-93ec-36dcd0b831d2</string>
</dict>
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "drive-mobile",
"version": "v1.10.0",
"version": "v1.10.2",
"private": true,
"license": "GNU",
"scripts": {
Expand Down
8 changes: 1 addition & 7 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -249,13 +249,7 @@ function AppContent(): JSX.Element {
onClose={onChangeProfilePictureModalClosed}
/>
<LanguageModal isOpen={isLanguageModalOpen} onClose={onLanguageModalClosed} />
<SignOutModal
onSignedOut={() => {
if (navigationRef.isReady()) {
navigationRef.reset({ index: 0, routes: [{ name: 'SignIn' }] });
}
}}
/>
<SignOutModal />
</Portal.Host>
</DriveContextProvider>
) : (
Expand Down
16 changes: 11 additions & 5 deletions src/components/SearchInput/SearchInput.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MagnifyingGlass, XCircle } from 'phosphor-react-native';
import { MagnifyingGlassIcon, XCircleIcon } from 'phosphor-react-native';
import { createRef, useState } from 'react';
import { StyleProp, TextInput, TouchableOpacity, View, ViewStyle } from 'react-native';
import { useTailwind } from 'tailwind-rn';
Expand Down Expand Up @@ -50,7 +50,7 @@ export function SearchInput(props: SearchInputProps): JSX.Element {
<View style={tailwind('flex-row items-center')}>
{!isFocused && (
<View style={tailwind('pl-3')}>
<MagnifyingGlass color={getColor('text-gray-40')} size={18} />
<MagnifyingGlassIcon color={getColor('text-gray-40')} size={18} />
</View>
)}

Expand All @@ -62,8 +62,14 @@ export function SearchInput(props: SearchInputProps): JSX.Element {
value={props.value}
style={[
styles.fontWeight.regular,
tailwind('text-base pl-3 h-9 flex-1'),
{ marginBottom: 2, color: getColor('text-gray-100') },
tailwind('pl-3 h-9 flex-1'),
{
fontSize: 16,
color: getColor('text-gray-100'),
paddingVertical: 0,
textAlignVertical: 'center',
includeFontPadding: false,
},
]}
placeholder={props.placeholder || ''}
placeholderTextColor={getColor('text-gray-80')}
Expand All @@ -72,7 +78,7 @@ export function SearchInput(props: SearchInputProps): JSX.Element {
{!!props.value && (
<TouchableOpacity onPress={onClearButtonPressed}>
<View style={tailwind('py-1.5 px-3 items-center justify-center')}>
<XCircle weight="fill" color={getColor('text-gray-40')} size={24} />
<XCircleIcon weight="fill" color={getColor('text-gray-40')} size={24} />
</View>
</TouchableOpacity>
)}
Expand Down
12 changes: 5 additions & 7 deletions src/components/modals/SignOutModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { View } from 'react-native';

import { useTailwind } from 'tailwind-rn';
import strings from '../../../../assets/lang/strings';
import appService from '../../../services/AppService';
import { useAppDispatch, useAppSelector } from '../../../store/hooks';
import { authSelectors, authThunks } from '../../../store/slices/auth';
import { uiActions } from '../../../store/slices/ui';
Expand All @@ -12,11 +13,7 @@ import LoadingSpinner from '../../LoadingSpinner';
import UserProfilePicture from '../../UserProfilePicture';
import CenterModal from '../CenterModal';

interface SignOutModalProps {
readonly onSignedOut: () => void;
}

function SignOutModal({ onSignedOut }: SignOutModalProps): JSX.Element {
function SignOutModal(): JSX.Element {
const tailwind = useTailwind();
const dispatch = useAppDispatch();
const userFullName = useAppSelector(authSelectors.userFullName);
Expand All @@ -40,7 +37,6 @@ function SignOutModal({ onSignedOut }: SignOutModalProps): JSX.Element {
await dispatch(authThunks.signOutThunk({ reason: 'manual' }));
isSigningOutRef.current = false;
setIsSigningOut(false);
onSignedOut();
onClosed();
};

Expand All @@ -57,7 +53,9 @@ function SignOutModal({ onSignedOut }: SignOutModalProps): JSX.Element {
<LoadingSpinner size={40} />
</View>
<AppText style={tailwind('text-gray-80 text-center text-base mt-5')} medium>
{strings.modals.SignOutModal.signingOut}
{appService.isPhotosEnabled
? strings.modals.SignOutModal.signingOut
: strings.modals.SignOutModal.signingOutGeneric}
</AppText>
</View>
) : (
Expand Down
51 changes: 51 additions & 0 deletions src/navigation/AppStackNavigator.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { Platform } from 'react-native';

import { LargeShareUploadScreen } from '../screens/LargeShareUpload/LargeShareUploadScreen';
import { DeactivatedAccountScreen } from '../screens/DeactivatedAccountScreen';
import DebugScreen from '../screens/DebugScreen';
import { TrashScreen } from '../screens/common/TrashScreen';
import { DrivePreviewScreen } from '../screens/drive/DrivePreviewScreen';
import { PhotoPreviewScreen } from '../screens/PhotoPreviewScreen';
import { SettingsNavigator } from './SettingsNavigator';
import AuthenticatedNavigator from './TabExplorerNavigator';
import ShareExtensionView from '../shareExtension/ShareExtensionView.android';
import { RootStackParamList } from '../types/navigation';

const Stack = createNativeStackNavigator<RootStackParamList>();

export default function AppStackNavigator(): JSX.Element {
return (
<Stack.Navigator initialRouteName="TabExplorer" screenOptions={{ headerShown: false, gestureEnabled: true }}>
<Stack.Screen name="Debug" component={DebugScreen} />
<Stack.Screen name="DeactivatedAccount" component={DeactivatedAccountScreen} />
<Stack.Screen name="TabExplorer" component={AuthenticatedNavigator} />
<Stack.Screen name="Trash" component={TrashScreen} />
<Stack.Screen name="Settings" component={SettingsNavigator} />
<Stack.Screen
name="DrivePreview"
component={DrivePreviewScreen}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
<Stack.Screen
name="PhotoPreview"
component={PhotoPreviewScreen}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
{Platform.OS === 'android' && (
<Stack.Screen
name="AndroidShare"
component={ShareExtensionView}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
)}
{Platform.OS === 'ios' && (
<Stack.Screen
name="LargeShareUpload"
component={LargeShareUploadScreen}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
)}
</Stack.Navigator>
);
}
27 changes: 27 additions & 0 deletions src/navigation/AuthStackNavigator.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { Platform } from 'react-native';

import SignInScreen from '../screens/SignInScreen';
import WebLoginScreen from '../screens/WebLoginScreen';
import DebugScreen from '../screens/DebugScreen';
import ShareExtensionView from '../shareExtension/ShareExtensionView.android';
import { RootStackParamList } from '../types/navigation';

const Stack = createNativeStackNavigator<RootStackParamList>();

export default function AuthStackNavigator(): JSX.Element {
return (
<Stack.Navigator initialRouteName="SignIn" screenOptions={{ headerShown: false, gestureEnabled: true }}>
<Stack.Screen name="Debug" component={DebugScreen} />
<Stack.Screen name="SignIn" component={SignInScreen} />
<Stack.Screen name="WebLogin" component={WebLoginScreen} />
{Platform.OS === 'android' && (
<Stack.Screen
name="AndroidShare"
component={ShareExtensionView}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
)}
</Stack.Navigator>
);
}
56 changes: 4 additions & 52 deletions src/navigation/RootNavigator.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,14 @@
import { NavigationContainerRef } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { Platform, View } from 'react-native';
import { LargeShareUploadScreen } from '../screens/LargeShareUpload/LargeShareUploadScreen';
import { View } from 'react-native';

import SignInScreen from '../screens/SignInScreen';
import WebLoginScreen from '../screens/WebLoginScreen';
import { useAppSelector } from '../store/hooks';
import { RootStackParamList } from '../types/navigation';
import AuthenticatedNavigator from './TabExplorerNavigator';

import { useDeepLinks } from '../hooks/useDeepLinks';
import { DeactivatedAccountScreen } from '../screens/DeactivatedAccountScreen';
import DebugScreen from '../screens/DebugScreen';
import { TrashScreen } from '../screens/common/TrashScreen';
import { DrivePreviewScreen } from '../screens/drive/DrivePreviewScreen';
import { PhotoPreviewScreen } from '../screens/PhotoPreviewScreen';
import { SettingsNavigator } from './SettingsNavigator';
import ShareExtensionView from '../shareExtension/ShareExtensionView.android';
import { useIosPendingShareHandoff } from '../shareExtension/hooks/useIosPendingShareHandoff';
import { useAndroidShareIntent } from '../shareExtension/useAndroidShareIntent';

const Stack = createNativeStackNavigator<RootStackParamList>();
import AppStackNavigator from './AppStackNavigator';
import AuthStackNavigator from './AuthStackNavigator';

type Props = {
navigationContainerRef?: NavigationContainerRef<RootStackParamList>;
Expand All @@ -35,43 +23,7 @@ function AppNavigator({ navigationContainerRef }: Readonly<Props>): JSX.Element

if (isLoggedIn == null) return <View />;

const initialRouteName: keyof RootStackParamList = isLoggedIn ? 'TabExplorer' : 'SignIn';

return (
<Stack.Navigator initialRouteName={initialRouteName} screenOptions={{ headerShown: false, gestureEnabled: true }}>
<Stack.Screen name="Debug" component={DebugScreen} />
<Stack.Screen name="SignIn" component={SignInScreen} />
<Stack.Screen name="WebLogin" component={WebLoginScreen} />
<Stack.Screen name="DeactivatedAccount" component={DeactivatedAccountScreen} />
<Stack.Screen name="TabExplorer" component={AuthenticatedNavigator} />
<Stack.Screen name="Trash" component={TrashScreen} />
<Stack.Screen name="Settings" component={SettingsNavigator} />
<Stack.Screen
name="DrivePreview"
component={DrivePreviewScreen}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
<Stack.Screen
name="PhotoPreview"
component={PhotoPreviewScreen}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
{Platform.OS === 'android' && (
<Stack.Screen
name="AndroidShare"
component={ShareExtensionView}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
)}
{Platform.OS === 'ios' && (
<Stack.Screen
name="LargeShareUpload"
component={LargeShareUploadScreen}
options={{ animation: 'slide_from_bottom', gestureEnabled: false }}
/>
)}
</Stack.Navigator>
);
return isLoggedIn ? <AppStackNavigator /> : <AuthStackNavigator />;
}

export default AppNavigator;
2 changes: 0 additions & 2 deletions src/navigation/TabExplorerNavigator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { BottomTabBarProps } from '@react-navigation/bottom-tabs/lib/typescript/
import { useEffect } from 'react';
import { AppState, AppStateStatus, View } from 'react-native';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { authThunks } from 'src/store/slices/auth';
import { runBackupCycleThunk } from 'src/store/slices/photos';
import { storageThunks } from 'src/store/slices/storage';
import { useTailwind } from 'tailwind-rn';
Expand Down Expand Up @@ -60,7 +59,6 @@ export default function TabExplorerNavigator(props: RootStackScreenProps<'TabExp
} catch {
const isDeletingAccount = await asyncStorageService.getItem(AsyncStorageKey.IsDeletingAccount);
if (isDeletingAccount) {
dispatch(authThunks.signOutThunk({ reason: 'manual' }));
props.navigation.replace('DeactivatedAccount');
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import React from 'react';

import { RootStackScreenProps } from '../../types/navigation';
import InternxtLogo from '../../../assets/logo.svg';
import AppScreen from '../../components/AppScreen';
import AppButton from '../../components/AppButton';
Expand All @@ -12,12 +11,15 @@ import { Dimensions, Linking, View } from 'react-native';
import AppVersionWidget from 'src/components/AppVersionWidget';
import { LinearGradient } from 'expo-linear-gradient';
import appService from 'src/services/AppService';
import { useAppDispatch } from 'src/store/hooks';
import { authThunks } from 'src/store/slices/auth';

export function DeactivatedAccountScreen({ navigation }: RootStackScreenProps<'DeactivatedAccount'>): JSX.Element {
export function DeactivatedAccountScreen(): JSX.Element {
const tailwind = useTailwind();
const dispatch = useAppDispatch();

const handleGoToSignIn = () => {
navigation.replace('SignIn');
dispatch(authThunks.signOutThunk({ reason: 'manual' }));
};
const handleGoToSignUp = async () => {
const webAuthUrl = appService.urls.webAuth.signup;
Expand Down
Loading
Loading