Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c238239
bump RN patches
war-in Feb 27, 2025
f1f4a8e
follow upgrade helper
war-in Feb 27, 2025
7ef7fcc
update gesture handler
war-in Feb 27, 2025
5b8df7d
migrate rest of patches
war-in Feb 28, 2025
367b72e
apply rest of migration guide, bump some libs
war-in Feb 28, 2025
432bf34
add react 19 & react native 78 patch for `react-native-web`
war-in Mar 10, 2025
17f5962
Merge branch '@wolewicki/rn-77-upgrade' into war-in/rn-78-update
war-in Mar 10, 2025
f6195c4
Merge branch '@wolewicki/rn-77-upgrade' into war-in/rn-78-update
war-in Mar 18, 2025
f18669d
bump screens and airship
war-in Mar 18, 2025
9240cc0
Merge branch 'main' into war-in/rn-78-update
war-in Mar 21, 2025
0ffb153
Merge branch 'main' into war-in/rn-78-update
war-in Mar 25, 2025
5e2c3f9
make android build properly
war-in Mar 25, 2025
f00076b
Merge branch 'main' into war-in/rn-78-update
war-in Mar 28, 2025
1aa64b4
update to RN 0.78.1
war-in Mar 28, 2025
fcbf6b5
migrate FilePicker wip
war-in Mar 28, 2025
747e3ba
Merge branch 'main' into war-in/migrate-documents-picker
war-in Mar 31, 2025
ac7c55c
migrate AttachmentPicker
war-in Mar 31, 2025
f6cff55
remove unnecessary changes from FilePicker
war-in Mar 31, 2025
94236e4
fix types
war-in Mar 31, 2025
eb8d5c9
fix tests
war-in Mar 31, 2025
8a1f559
fix lint & bump Podfile.lock
war-in Mar 31, 2025
9cc1d78
migrate manipulateAsync usage
war-in Mar 31, 2025
adbcfe9
Merge branch 'main' into war-in/migrate-documents-picker
war-in Apr 7, 2025
92cbe1a
merge main
war-in Apr 7, 2025
17f72b3
Merge branch 'refs/heads/war-in/migrate-documents-picker' into war-in…
war-in Apr 7, 2025
dab0041
make web run
war-in Apr 7, 2025
6ce4a28
migrate rn patches to 0.79
war-in Apr 9, 2025
4ef3600
remove unnecessary patches
war-in Apr 9, 2025
a3968ad
finish migration
war-in Apr 9, 2025
3eb6a5f
fix patch-package warnings
war-in Apr 9, 2025
91243e7
Merge branch 'main' into war-in/rn-78-update
war-in Apr 11, 2025
82226e5
add patches for airship and pager view (with 0.79 support) (each stan…
war-in Apr 11, 2025
e971888
Merge branch 'main' into war-in/rn-78-update
war-in Apr 14, 2025
b66a728
bump expo
war-in Apr 15, 2025
8767b11
make web usable
war-in Apr 15, 2025
7aa38d5
Merge branch 'main' into war-in/rn-78-update
war-in Apr 16, 2025
fc71706
Update Podfile.lock
mateuuszzzzz Apr 16, 2025
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
6 changes: 6 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ gem 'xcodeproj', '< 1.26.0'
gem "fastlane", "~> 2", ">= 2.222.0"
gem "xcpretty", "~> 0"

# Ruby 3.4.0 has removed some libraries from the standard library.
gem 'bigdecimal'
gem 'logger'
gem 'benchmark'
gem 'mutex_m'


plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
8 changes: 8 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ GEM
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
benchmark (0.3.0)
bigdecimal (3.1.5)
claide (1.1.0)
cocoapods (1.15.2)
addressable (~> 2.8)
Expand Down Expand Up @@ -227,6 +229,7 @@ GEM
json (2.7.6)
jwt (2.9.3)
base64
logger (1.6.0)
mime-types (3.5.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.1003)
Expand All @@ -236,6 +239,7 @@ GEM
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.4.1)
mutex_m (0.2.0)
nanaimo (0.3.0)
nap (1.1.0)
naturally (2.2.1)
Expand Down Expand Up @@ -302,10 +306,14 @@ PLATFORMS

DEPENDENCIES
activesupport (>= 6.1.7.5, != 7.1.0)
benchmark
bigdecimal
cocoapods (= 1.15.2)
fastlane (~> 2, >= 2.222.0)
fastlane-plugin-aws_s3
fastlane-plugin-firebase_app_distribution
logger
mutex_m
xcodeproj (< 1.26.0)
xcpretty (~> 0)

Expand Down
2 changes: 1 addition & 1 deletion Mobile-Expensify
24 changes: 24 additions & 0 deletions __mocks__/@react-native-documents/picker.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import type {FileToCopy} from '@react-native-documents/picker';

const keepLocalCopy = jest.fn();
const pick = jest.fn();
const types = Object.freeze({
allFiles: 'public.item',
audio: 'public.audio',
csv: 'public.comma-separated-values-text',
doc: 'com.microsoft.word.doc',
docx: 'org.openxmlformats.wordprocessingml.document',
images: 'public.image',
json: 'public.json',
pdf: 'com.adobe.pdf',
plainText: 'public.plain-text',
ppt: 'com.microsoft.powerpoint.ppt',
pptx: 'org.openxmlformats.presentationml.presentation',
video: 'public.movie',
xls: 'com.microsoft.excel.xls',
xlsx: 'org.openxmlformats.spreadsheetml.sheet',
zip: 'public.zip-archive',
});

export type {FileToCopy};
export {keepLocalCopy, pick, types};
33 changes: 0 additions & 33 deletions __mocks__/react-native-document-picker.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 @@ -89,14 +89,14 @@ def enableProguardInReleaseBuilds = true
* The preferred build flavor of JavaScriptCore (JSC)
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
* `def jscFlavor = 'io.github.react-native-community:jsc-android-intl:2026004.+`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'

android {
androidResources {
Expand Down
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
4 changes: 2 additions & 2 deletions android/gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 18 additions & 17 deletions ios/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,78 +5,79 @@
// Created by Marcin Warchoł on 08/04/2025.
//

import UIKit
//import UIKit
import React
import React_RCTAppDelegate
import ReactAppDependencyProvider
import ExpoModulesCore
import Firebase
import Expo



@main
class AppDelegate: ExpoAppDelegate, UNUserNotificationCenterDelegate {
override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
self.moduleName = "NewExpensify"
self.dependencyProvider = RCTAppDependencyProvider()
self.initialProps = [:]

// Configure firebase
FirebaseApp.configure()

// Force the app to LTR mode.
RCTI18nUtil.sharedInstance().allowRTL(false)
RCTI18nUtil.sharedInstance().forceRTL(false)

_ = super.application(application, didFinishLaunchingWithOptions: launchOptions)
if let rootView = self.window.rootViewController?.view as? RCTRootView {

if let rootView = self.window?.rootViewController?.view as? RCTRootView {
RCTBootSplash.initWithStoryboard("BootSplash", rootView: rootView) // <- initialization using the storyboard file name
}

// Define UNUserNotificationCenter
let center = UNUserNotificationCenter.current()
center.delegate = self

// Start the "js_load" custom performance tracing metric. This timer is
// stopped by a native module in the JS so we can measure total time starting
// in the native layer and ending in the JS layer.
RCTStartupTimer.start()

if !UserDefaults.standard.bool(forKey: "isFirstRunComplete") {
UIApplication.shared.applicationIconBadgeNumber = 0
UserDefaults.standard.set(true, forKey: "isFirstRunComplete")
}

RNBackgroundTaskManager.setup()

return true
}


override func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
return RCTLinkingManager.application(application, open: url, options: options)
}

override func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
return RCTLinkingManager.application(application,
continue: userActivity,
restorationHandler: restorationHandler)
}

override func sourceURL(for bridge: RCTBridge) -> URL? {
return self.bundleURL()
}

override func bundleURL() -> URL? {
#if DEBUG
return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
#else
return Bundle.main.url(forResource: "main", withExtension: "jsbundle")
#endif
}

// This methods is needed to support the hardware keyboard shortcuts
func keyCommands() -> [Any]? {
return HardwareShortcuts.sharedInstance().keyCommands()
Expand Down
Loading