Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e3ed508
Fix Android video player cropping and add landscape rotation support
CandelR Feb 2, 2026
77fac48
Implement upload queue service and enhance file upload handling with …
CandelR Feb 3, 2026
cc0de84
Merge pull request #352 from internxt/bugfix/PB-5765-video-player-cro…
CandelR Feb 3, 2026
0c78067
Add rate limit handling
CandelR Feb 4, 2026
d975bf6
Add unit tests for rate limit retry and service functionality
CandelR Feb 4, 2026
b8cb2ae
Refactor rate limit service to improve ID segment handling and normal…
CandelR Feb 4, 2026
c08d256
Refactor rate limit service and interceptors to use constants for hea…
CandelR Feb 4, 2026
de9e2ae
Add rate limit error messages and enhance error handling for rate lim…
CandelR Feb 4, 2026
676428a
Merge branch 'feature/PB-XXXX-handle-rate-limits' into feature/rate-l…
CandelR Feb 4, 2026
3c80419
Update rate limit headers to use internxt prefix in tests
CandelR Feb 4, 2026
481f9bf
Enhance error handling and notifications for upload and folder conten…
CandelR Feb 5, 2026
5c27ac2
Updated node version in unit tests action
CandelR Feb 5, 2026
2632517
Merge pull request #355 from internxt/feature/PB-5093-add-queue-to-up…
CandelR Feb 5, 2026
f58ad8e
Merge pull request #354 from internxt/feature/PB-XXXX-handle-rate-limits
CandelR Feb 6, 2026
ffd2fb9
Merge pull request #356 from internxt/feature/rate-limit-tests
CandelR Feb 6, 2026
1716889
Merge pull request #357 from internxt/feature/improve-error-handling-…
CandelR Feb 6, 2026
0264ffb
Fixed language refresh and added device language detection
CandelR Feb 6, 2026
98983ff
Fixed language change race condition, added async storage language ke…
CandelR Feb 6, 2026
2166b9d
Removed dead code and documented legacy
CandelR Feb 6, 2026
3fc1ceb
Merge pull request #358 from internxt/feature/PB-5807-fix-language-ch…
CandelR Feb 6, 2026
af86c79
Merge branch 'release-v1.8.6' into feature/clean-dead-code
CandelR Feb 6, 2026
3dfa062
Removed unnecessary logs
CandelR Feb 6, 2026
f8416b0
Merge pull request #359 from internxt/feature/clean-dead-code
CandelR Feb 9, 2026
4e9daf2
Bump package version, added headers and cast errors to display friend…
CandelR Feb 12, 2026
838c8a3
Merge pull request #362 from internxt/feature/bump-version-and-handle…
CandelR Feb 13, 2026
9acf096
Merge branch 'master' into release-v1.8.6
CandelR Feb 16, 2026
1f42117
Bump version to 1.8.7
CandelR Feb 16, 2026
f3270a1
Added security window for rate limit reset time
CandelR Feb 16, 2026
1918b7d
Added newtork cache module gradle file for android
CandelR Feb 16, 2026
11bf586
Update sdk verion
CandelR Feb 16, 2026
e61f799
Merge pull request #364 from internxt/feat/bump-version
CandelR Feb 17, 2026
e8e8fdf
fix: show correct month names and language labels after language change
CandelR Feb 17, 2026
ab70763
chore: prefer replaceAll over replace
CandelR Feb 17, 2026
0eb3f2b
Merge pull request #365 from internxt/bugfix/month-display-and-langua…
CandelR Feb 17, 2026
8b64bda
fix: resolve navbar visibility issues during video playback on Android
CandelR Feb 25, 2026
6170c4d
Added safe area in preview and hide android nav buttons when hide header
CandelR Feb 26, 2026
7cd2b46
Changed negated condition
CandelR Feb 26, 2026
273c480
Merge pull request #374 from internxt/bugfix/fix-navbar-overlap
CandelR Feb 26, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:

strategy:
matrix:
node-version: [18.20.4]
node-version: [20]
fail-fast: true

steps:
Expand Down
22 changes: 0 additions & 22 deletions __mocks__/react-native-localization.ts

This file was deleted.

4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ android {
applicationId 'com.internxt.cloud'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 118
versionName "1.8.6"
versionCode 119
versionName "1.8.7"
}

flavorDimensions "react-native-capture-protection"
Expand Down
2 changes: 2 additions & 0 deletions android/app/src/main/java/com/internxt/cloud/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ import expo.modules.ReactActivityDelegateWrapper

class MainActivity : ReactActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// @generated begin expo-splashscreen - expo prebuild (DO NOT MODIFY) sync-f3ff59a738c56c9a6119210cb55f0b613eb8b6af
SplashScreenManager.registerOnActivity(this)
// @generated end expo-splashscreen
super.onCreate(null)
}

Expand Down
4 changes: 2 additions & 2 deletions 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.8.5</string>
<string name="expo_splash_screen_resize_mode" translatable="false">cover</string>
<string name="expo_runtime_version">1.8.6</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 android/app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:enforceNavigationBarContrast" tools:targetApi="29">true</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:editTextStyle">@style/ResetEditText</item>
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
Expand All @@ -17,5 +18,6 @@
<item name="windowSplashScreenBackground">@color/splashscreen_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/splashscreen_icon</item>
<item name="postSplashScreenTheme">@style/AppTheme</item>
<item name="android:windowSplashScreenBehavior">icon_preferred</item>
</style>
</resources>
1 change: 1 addition & 0 deletions app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ const appConfig: ExpoConfig & { extra: AppEnv & { NODE_ENV: AppStage; RELEASE_ID
'expo-localization',
'expo-secure-store',
'expo-sqlite',
['expo-screen-orientation', { initialOrientation: 'PORTRAIT' }],
[
'expo-splash-screen',
{
Expand Down
20 changes: 17 additions & 3 deletions assets/lang/strings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@ const translations = {
},
Language: {
title: 'Select language',
info: 'Restart the application to see the language change.',
info: 'Language changed successfully.',
},
ChangeProfilePicture: {
title: 'Edit photo',
Expand Down Expand Up @@ -738,10 +738,14 @@ const translations = {
notEnoughSpaceOnDevice: 'Not enough storage space available for download',
fileAlreadyDownloading: 'File is already downloading, stopping download',
genericError: 'An unexpected error occurred. Please try again.',
rateLimitReached: "This action couldn't be completed right now. Please wait a moment and try again.",
rateLimitUpload: "Your upload couldn't be completed right now. Please wait a moment and try again.",
rateLimitDownload: "Your download couldn't be completed right now. Please wait a moment and try again.",
rateLimitContent: "Content couldn't be loaded right now. Please wait a moment and try again.",
},
security: {
alerts: {
dontDisplayAgain: 'Dont show this again',
dontDisplayAgain: "Don't show this again",
securityWarning: {
title: '⚠️ Security Notice',
message: 'Security concerns detected:\n\n{0}\n\nFor better security, consider addressing these issues.',
Expand Down Expand Up @@ -1334,7 +1338,7 @@ const translations = {
},
Language: {
title: 'Selecciona idioma',
info: 'Reinicie la aplicación para ver el cambio de idioma.',
info: 'Idioma cambiado correctamente.',
},
ChangeProfilePicture: {
title: 'Editar foto',
Expand Down Expand Up @@ -1522,6 +1526,10 @@ const translations = {
notEnoughSpaceOnDevice: 'No hay suficiente espacio de almacenamiento disponible para la descarga',
fileAlreadyDownloading: 'El archivo ya se está descargando, deteniendo la descarga',
genericError: 'Se ha producido un error inesperado. Por favor, inténtelo de nuevo.',
rateLimitReached: 'No se ha podido completar esta acción en este momento. Por favor, espera un momento e inténtalo de nuevo.',
rateLimitUpload: 'No se ha podido completar la subida en este momento. Por favor, espera un momento e inténtalo de nuevo.',
rateLimitDownload: 'No se ha podido completar la descarga en este momento. Por favor, espera un momento e inténtalo de nuevo.',
rateLimitContent: 'No se ha podido cargar el contenido en este momento. Por favor, espera un momento e inténtalo de nuevo.',
},
security: {
alerts: {
Expand Down Expand Up @@ -1573,6 +1581,11 @@ const translations = {

let currentLanguage = 'en';

const nativeLanguageNames: Record<string, string> = {
en: translations.en.languages.en,
es: translations.es.languages.es,
};

const strings = {
...translations.en,
setLanguage: (lang: string) => {
Expand All @@ -1591,6 +1604,7 @@ const strings = {
return args[argIndex] !== undefined ? String(args[argIndex]) : match;
});
},
getNativeLanguageName: (lang: string) => nativeLanguageNames[lang] ?? lang,
getString: (path: string, fallback?: string) => {
const keys = path.split('.');
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down
4 changes: 3 additions & 1 deletion ios/Internxt/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.8.6</string>
<string>1.8.7</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand All @@ -34,6 +34,8 @@
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>EXDefaultScreenOrientationMask</key>
<string>UIInterfaceOrientationMaskPortrait</string>
<key>LSMinimumSystemVersion</key>
<string>15.1</string>
<key>LSRequiresIPhoneOS</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.8.6</string>
<string>1.8.7</string>
<key>EXUpdatesURL</key>
<string>https://u.expo.dev/680f4feb-6315-4a50-93ec-36dcd0b831d2</string>
</dict>
Expand Down
33 changes: 33 additions & 0 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,35 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- ExpoScreenOrientation (9.0.8):
- boost
- DoubleConversion
- ExpoModulesCore
- fast_float
- fmt
- glog
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- React-NativeModulesApple
- React-RCTFabric
- React-renderercss
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- ExpoSecureStore (15.0.8):
- ExpoModulesCore
- ExpoSharing (14.0.8):
Expand Down Expand Up @@ -3223,6 +3252,7 @@ DEPENDENCIES:
- ExpoLocalization (from `../node_modules/expo-localization/ios`)
- ExpoMediaLibrary (from `../node_modules/expo-media-library/ios`)
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
- ExpoScreenOrientation (from `../node_modules/expo-screen-orientation/ios`)
- ExpoSecureStore (from `../node_modules/expo-secure-store/ios`)
- ExpoSharing (from `../node_modules/expo-sharing/ios`)
- ExpoSplashScreen (from `../node_modules/expo-splash-screen/ios`)
Expand Down Expand Up @@ -3386,6 +3416,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-media-library/ios"
ExpoModulesCore:
:path: "../node_modules/expo-modules-core"
ExpoScreenOrientation:
:path: "../node_modules/expo-screen-orientation/ios"
ExpoSecureStore:
:path: "../node_modules/expo-secure-store/ios"
ExpoSharing:
Expand Down Expand Up @@ -3620,6 +3652,7 @@ SPEC CHECKSUMS:
ExpoLocalization: d9168d5300a5b03e5e78b986124d11fb6ec3ebbd
ExpoMediaLibrary: a3093b04365b245bb23b25b6eba84eb6ab55fecb
ExpoModulesCore: d86dab8a6c8f1184f9b0b0503ace93919882aa15
ExpoScreenOrientation: b895491eb180dd92836f00198ac215f2fae2d45b
ExpoSecureStore: d32f751874a2ceb5aaeebeb3578e165c1ba2b24a
ExpoSharing: 0d983394ed4a80334bab5a0d5384f75710feb7e8
ExpoSplashScreen: bc3cffefca2716e5f22350ca109badd7e50ec14d
Expand Down
5 changes: 2 additions & 3 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const untranspiledModulePatterns = [
'@scure/bip39',
'@scure/base',
'@noble/hashes',
'uuid',
];

const config: Config.InitialOptions = {
Expand All @@ -28,9 +29,7 @@ const config: Config.InitialOptions = {
setupFilesAfterEnv: ['@testing-library/jest-native/extend-expect'],
transformIgnorePatterns: [`node_modules/(?!${untranspiledModulePatterns.join('|')})`],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
moduleNameMapper: {
'^uuid$': require.resolve('uuid'),
},
moduleNameMapper: {},
};

export default config;
77 changes: 77 additions & 0 deletions modules/network-cache/android/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'maven-publish'

group = 'expo.modules.networkcache'
version = '0.0.1'

buildscript {
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
if (expoModulesCorePlugin.exists()) {
apply from: expoModulesCorePlugin
applyKotlinExpoModulesCorePlugin()
}
}

afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
}
}
repositories {
maven {
url = mavenLocal().url
}
}
}
}

android {
namespace "expo.modules.networkcache"

compileSdkVersion safeExtGet("compileSdkVersion", 34)

defaultConfig {
minSdkVersion safeExtGet("minSdkVersion", 23)
targetSdkVersion safeExtGet("targetSdkVersion", 34)
}

publishing {
singleVariant("release") {
withSourcesJar()
}
}

lintOptions {
abortOnError false
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.majorVersion
}
}

dependencies {
implementation project(':expo-modules-core')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
}

def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}

def getKotlinVersion() {
def dependencies = new File(project(":expo-modules-core").projectDir, "dependencies.gradle")
if (dependencies.exists()) {
apply from: dependencies
return kotlinVersion()
}
return rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : "1.9.23"
}
2 changes: 2 additions & 0 deletions modules/network-cache/android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "drive-mobile",
"version": "v1.8.6",
"version": "v1.8.7",
"private": true,
"license": "GNU",
"scripts": {
Expand Down Expand Up @@ -36,7 +36,7 @@
"@internxt/lib": "^1.4.1",
"@internxt/mobile-sdk": "https://github.com/internxt/mobile-sdk/releases/download/v0.3.1/internxt-mobile-sdk-v0.3.1_.tgz",
"@internxt/rn-crypto": "0.1.15",
"@internxt/sdk": "1.11.25",
"@internxt/sdk": "1.13.2",
"@react-native-async-storage/async-storage": "2.2.0",
"@react-navigation/bottom-tabs": "^6.2.0",
"@react-navigation/native": "^6.1.18",
Expand Down Expand Up @@ -69,6 +69,7 @@
"expo-localization": "~17.0.8",
"expo-media-library": "~18.2.1",
"expo-navigation-bar": "~5.0.10",
"expo-screen-orientation": "^9.0.8",
"expo-secure-store": "~15.0.8",
"expo-sharing": "~14.0.8",
"expo-splash-screen": "~31.0.13",
Expand Down
4 changes: 0 additions & 4 deletions src/@inxt-js/api/FileObject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import { Logger } from '../lib/download';
import { wrap } from '../lib/utils/error';
import { EventEmitter } from '../lib/utils/eventEmitter';
import { logger } from '../lib/utils/logger';
import { Bridge, InxtApiI } from '../services/api';
import FileManager from './FileManager';
import { DEFAULT_INXT_MIRRORS, DOWNLOAD_CANCELLED } from './constants';

Expand All @@ -34,7 +33,6 @@ export class FileObject extends EventEmitter {
fileKey: Buffer;

private aborted = false;
private api: InxtApiI;
private file: FileManager;

constructor(config: EnvironmentConfig, bucketId: string, fileId: string, debug: Logger, file: FileManager) {
Expand All @@ -43,8 +41,6 @@ export class FileObject extends EventEmitter {
this.bucketId = bucketId;
this.fileId = fileId;
this.fileKey = Buffer.alloc(0);

this.api = new Bridge(config);
this.file = file;

this.once(DOWNLOAD_CANCELLED, this.abort.bind(this));
Expand Down
Loading
Loading