Skip to content

Add contacts import nitro module #54459

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 100 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
bf0ca57
Merge branch 'main' of https://github.com/Expensify/App
perunt Dec 23, 2024
7a548c8
Revert "Revert "Revert "Revert "Contacts import(51018)""""
perunt Dec 23, 2024
6f1e3da
bump nitro
perunt Jan 6, 2025
7abab7e
modify HybridContactsModule
perunt Jan 6, 2025
434a9f9
generate specs
perunt Jan 6, 2025
e704e6b
Merge branch '@perunt/rerevert-contacts-import-module' of https://git…
perunt Jan 6, 2025
fce6f6b
lint
perunt Jan 6, 2025
9f0acad
Merge branch '@perunt/rerevert-contacts-import-module' of https://git…
perunt Jan 10, 2025
1d85e9a
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Jan 10, 2025
7c8fc7f
fix android
perunt Jan 10, 2025
924ce0e
import
perunt Jan 13, 2025
9be4449
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Jan 13, 2025
40ab11f
typecheck
perunt Jan 13, 2025
524fdec
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Jan 16, 2025
4ad7f0b
bump nitro to 0.21.0
perunt Jan 16, 2025
be5e87a
Merge branch 'main'
perunt Jan 16, 2025
d54e954
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Feb 20, 2025
27c0243
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Feb 20, 2025
ab4e4b5
lint
perunt Feb 21, 2025
3ed4384
fix: new eslint rules
perunt Feb 21, 2025
3a7122d
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Mar 18, 2025
15c0c9c
bump nitro
perunt Mar 24, 2025
0841825
use one tsconfig
perunt Mar 24, 2025
087cfaa
remove node modules from nitro module
perunt Mar 24, 2025
45be028
clean tsconfig
perunt Mar 24, 2025
ac69b81
codegen
perunt Mar 24, 2025
6179f6d
fix: Nitro breaking changes
perunt Mar 24, 2025
defe8e9
move from interface to type
perunt Mar 26, 2025
22bb0fa
rename
perunt Mar 26, 2025
3bd8809
specs + add empty module
perunt Mar 26, 2025
fbdba00
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Mar 26, 2025
2010959
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Mar 27, 2025
2caedc0
rename to ExpensifyNitroUtils
perunt Mar 27, 2025
73e62fd
fix cpp adapter
perunt Mar 27, 2025
320b3d9
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Mar 28, 2025
68c1f72
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Mar 31, 2025
e1b14b0
clean spec
perunt Apr 1, 2025
ee672e4
ашч context
perunt Apr 1, 2025
a4b5bd5
lint
perunt Apr 1, 2025
3422a85
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Apr 1, 2025
8862d5b
fix tsconfig
perunt Apr 2, 2025
c68a372
clean podfile
perunt Apr 2, 2025
c27b93c
clean gitignore
perunt Apr 2, 2025
f8646ff
use java 17
perunt Apr 2, 2025
37cdd4b
clean
perunt Apr 2, 2025
bd9c456
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Apr 8, 2025
f873d1d
podfile checksum
perunt Apr 8, 2025
75ebc09
change buildConfiguration
perunt Apr 9, 2025
ffceb88
add types
perunt Apr 16, 2025
e9274cd
rename
perunt Apr 21, 2025
dcaa5a0
update requestContactPermission in HybridContactsModule(kotlin)
perunt Apr 21, 2025
d86b2f8
move projection to const
perunt Apr 21, 2025
c8cd538
use CONTACT_FIELDS
perunt Apr 21, 2025
dd0a20c
refactor: improve code readability with early returns and static cons…
perunt Apr 21, 2025
95faeb2
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Apr 21, 2025
c827792
lint: export types
perunt Apr 22, 2025
e776c07
chore: resolve eslint errors triggered by merge conflict resolution
perunt Apr 22, 2025
ec4dec3
chore: fix useOnyx linter errors by adding canBeMissing parameters
perunt Apr 22, 2025
1940b44
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Apr 22, 2025
5a30f42
lint
perunt Apr 22, 2025
6583a01
fix AvatarSource type compatibility issues
perunt Apr 22, 2025
85a5f81
chore: fix useOnyx linter errors by adding canBeMissing parameters af…
perunt Apr 22, 2025
1ff99a0
use import type
perunt Apr 22, 2025
833f23a
adjust kotlin file
perunt Apr 22, 2025
280d84d
use better naming
perunt Apr 23, 2025
956c5b2
clean package file
perunt Apr 23, 2025
0d620a1
add explanations for ` @inline(__always)`
perunt Apr 23, 2025
2beeb99
rename callback
perunt Apr 23, 2025
74f1e9b
change name of allReportNameValuePairs due to conflicts
perunt Apr 23, 2025
8e9e278
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt Apr 23, 2025
af5fcc6
rename to `@expensify/nitro-utils`
perunt Apr 23, 2025
fc36ad1
refactor import/export
perunt Apr 25, 2025
5582bd8
fix type
perunt Apr 25, 2025
57075c8
Merge branch 'main' of https://github.com/Expensify/App; branch '@per…
perunt Apr 30, 2025
6f35f2f
refactor ContactPermissionModal
perunt May 1, 2025
282e1fb
apply suggestion
perunt May 2, 2025
ae612f4
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt May 2, 2025
b76ca89
lint
perunt May 2, 2025
d324b2b
clean
perunt May 2, 2025
51b73aa
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt May 6, 2025
12dc207
optimizations
perunt May 6, 2025
db4ec02
ImportContactButton only for mobile
perunt May 7, 2025
cc41133
goToSettings
perunt May 7, 2025
d9ac1de
useAppStateContactPermissionHandler
perunt May 7, 2025
1c88d2f
podfile + types
perunt May 7, 2025
67a2f58
format
perunt May 7, 2025
a3b4dd9
fix lint
perunt May 7, 2025
7109612
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt May 8, 2025
fd60fe8
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt May 8, 2025
dc0456d
lint
perunt May 8, 2025
185d343
bump permission to fix LIMITED access
perunt May 9, 2025
a9fbdda
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt May 20, 2025
869d344
import contact button with pagination layout
perunt May 20, 2025
31453c8
add import contact text on empty screen
perunt May 20, 2025
96979b8
remove console.log
perunt May 20, 2025
188133a
add beta flag: nativeContactImport
perunt May 27, 2025
d716be3
Merge branch 'main' of https://github.com/Expensify/App into @perunt/…
perunt May 27, 2025
892e195
roll back fastMerge since it was sync call of non worklet fn on UI th…
perunt May 27, 2025
5d6be4b
lint
perunt May 27, 2025
ad585cb
lint
perunt May 27, 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
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ web/gtm.js
src/libs/SearchParser/searchParser.js
src/libs/SearchParser/autocompleteParser.js
help/_scripts/**
modules/ExpensifyNitroUtils/nitrogen/**
Mobile-Expensify/**
vendor
1 change: 1 addition & 0 deletions android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# Add any project specific keep options here:
-keep class com.expensify.chat.BuildConfig { *; }
-keep class com.facebook.** { *; }
-keep class com.margelo.nitro.** { *; }
-keep, allowoptimization, allowobfuscation class expo.modules.** { *; }

# Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items).
Expand Down
1 change: 1 addition & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Expand Down
398 changes: 176 additions & 222 deletions ios/NewExpensify.xcodeproj/project.pbxproj
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally very difficult to review changes in this file, but can you try just removing all the changes in this file, then surgically add back only the ones that are strictly necessary here? Looking at some of the changes, it looks like you might've checked "automatically manage signing" or whatever that checkbox is in XCode. That can help you get a passing build without setting up the manual provisioning profile, but might break prod builds and we don't want to commit the change.

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ prepare_react_native_project!

setup_permissions([
'Camera',
'Contacts',
'LocationAccuracy',
'LocationAlways',
'LocationWhenInUse'
Expand Down
39 changes: 32 additions & 7 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,28 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- ExpensifyNitroUtils (0.0.1):
- DoubleConversion
- glog
- hermes-engine
- NitroModules
- RCT-Folly (= 2024.11.18.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- Expo (52.0.41):
- ExpoModulesCore
- ExpoAsset (11.0.5):
Expand Down Expand Up @@ -313,7 +335,7 @@ PODS:
- nanopb/encode (= 2.30908.0)
- nanopb/decode (2.30908.0)
- nanopb/encode (2.30908.0)
- NitroModules (0.24.1):
- NitroModules (0.25.2):
- DoubleConversion
- glog
- hermes-engine
Expand Down Expand Up @@ -2957,6 +2979,7 @@ DEPENDENCIES:
- EXAV (from `../node_modules/expo-av/ios`)
- EXImageLoader (from `../node_modules/expo-image-loader/ios`)
- "expensify-react-native-background-task (from `../node_modules/@expensify/react-native-background-task`)"
- "ExpensifyNitroUtils (from `../node_modules/@expensify/nitro-utils`)"
- Expo (from `../node_modules/expo`)
- ExpoAsset (from `../node_modules/expo-asset/ios`)
- ExpoFont (from `../node_modules/expo-font/ios`)
Expand Down Expand Up @@ -3142,6 +3165,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-image-loader/ios"
expensify-react-native-background-task:
:path: "../node_modules/@expensify/react-native-background-task"
ExpensifyNitroUtils:
:path: "../node_modules/@expensify/nitro-utils"
Expo:
:path: "../node_modules/expo"
ExpoAsset:
Expand Down Expand Up @@ -3400,11 +3425,12 @@ SPEC CHECKSUMS:
AirshipServiceExtension: 9c73369f426396d9fb9ff222d86d842fac76ba46
AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa
AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0
boost: d7090b1a93a9798c029277a8288114f2948f471c
DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385
boost: 659a89341ea4ab3df8259733813b52f26d8be9a5
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
EXAV: 57ea461614a714b8b8fcc72c6fbc298b8f1ec78b
EXImageLoader: 759063a65ab016b836f73972d3bb25404888713d
expensify-react-native-background-task: f180077e77a41952128fdc2c83ce1d980994d125
ExpensifyNitroUtils: 531df6f934e9cd9ef8ba4eb4cb51b47ebd32245f
Expo: 3a8a619381412bbf8537746ec27b485be01c8a1f
ExpoAsset: 0687fe05f5d051c4a34dd1f9440bd00858413cfe
ExpoFont: 773955186469acc5108ff569712a2d243857475f
Expand All @@ -3426,7 +3452,7 @@ SPEC CHECKSUMS:
ForkInputMask: 55e3fbab504b22da98483e9f9a6514b98fdd2f3c
FullStory: c8a10b2358c0d33c57be84d16e4c440b0434b33d
fullstory_react-native: 5132c9dfa5e1ea4ec42679a708af782d4c4ec4bc
glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a
glog: eb93e2f488219332457c3c4eafd2738ddc7e80b8
GoogleAppMeasurement: 5ba1164e3c844ba84272555e916d0a6d3d977e91
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
Expand All @@ -3445,7 +3471,7 @@ SPEC CHECKSUMS:
MapboxMaps: 05822ab0ee74f7d626e6471572439afe35c1c116
MapboxMobileEvents: d044b9edbe0ec7df60f6c2c9634fe9a7f449266b
nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
NitroModules: 32f6f1111b1c77b51e7907aa92f4de3b1a1764bc
NitroModules: 6cad985fa4a6efaf567fe5c9aa464bce17e2d0cc
NWWebSocket: 040d22f23438cc09aaeabf537beff67699c3c76d
Onfido: f3af62ea1c9a419589c133e3e511e5d2c4f3f8af
onfido-react-native-sdk: 1b8abe574234b86a592d7efb4eeada715709e23b
Expand Down Expand Up @@ -3503,7 +3529,6 @@ SPEC CHECKSUMS:
react-native-safe-area-context: 9b169299f9dc95f1d7fe1dd266fde53bd899cd0c
react-native-view-shot: bb169342812ded991a4a0387e7d0b17cb515e62a
react-native-wallet: 46df147c6089b2490dc5f4cbf25c58ce70b0215d
react-native-webrtc: 0f1c94069ff1eb9d8fb1618c2dc71f73542c8cfa
react-native-webview: b375842af66a9f0ab979378bdc8b26eeb5d8e3ee
React-nativeconfig: cb207ebba7cafce30657c7ad9f1587a8f32e4564
React-NativeModulesApple: 82a8bee52df9f5b378195a500f22be3a6ef0f890
Expand Down Expand Up @@ -3568,6 +3593,6 @@ SPEC CHECKSUMS:
VisionCamera: c95a8ad535f527562be1fb05fb2fd324578e769c
Yoga: 1fd059161b449018342943b095a6d4e69bcaa719

PODFILE CHECKSUM: 3742d104d6ece80a980e5052f676b69f97405c55
PODFILE CHECKSUM: 7259116b0f802ccccad12de2f41d2b5abec35add

COCOAPODS: 1.15.2
70 changes: 70 additions & 0 deletions modules/ExpensifyNitroUtils/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# OSX
#
.DS_Store

# XDE
.expo/

# VSCode
.vscode/
jsconfig.json

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace

# Android/IJ
#
.classpath
.cxx
.gradle
.idea
.project
.settings
local.properties
android.iml

# Cocoapods
#
example/ios/Pods

# Ruby
example/vendor/

# node.js
#
node_modules/
npm-debug.log
yarn-debug.log
yarn-error.log

# BUCK
buck-out/
\.buckd/
android/app/libs
android/keystores/debug.keystore

# Expo
.expo/

# Turborepo
.turbo/

# generated by bob
lib/
1 change: 1 addition & 0 deletions modules/ExpensifyNitroUtils/.watchmanconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
29 changes: 29 additions & 0 deletions modules/ExpensifyNitroUtils/ExpensifyNitroUtils.podspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
require "json"

package = JSON.parse(File.read(File.join(__dir__, "package.json")))

Pod::Spec.new do |s|
s.name = "ExpensifyNitroUtils"
s.version = package["version"]
s.summary = package["description"]
s.homepage = package["homepage"]
s.license = package["license"]
s.authors = package["author"]

s.platforms = { :ios => min_ios_version_supported }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is min_ios_version_supported defined automatically somewhere?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it's not defined there it will pick up version form root podfile

s.source = { :git => "https://github.com/mrousavy/nitro.git", :tag => "#{s.version}" }

s.source_files = [
# Implementation (Swift)
"ios/**/*.{swift}",
# Autolinking/Registration (Objective-C++)
"ios/**/*.{m,mm}",
# Implementation (C++ objects)
"cpp/**/*.{hpp,cpp}",
]

load 'nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb'
add_nitrogen_files(s)

install_modules_dependencies(s)
end
29 changes: 29 additions & 0 deletions modules/ExpensifyNitroUtils/android/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
project(ExpensifyNitroUtils)
cmake_minimum_required(VERSION 3.9.0)

set (PACKAGE_NAME ExpensifyNitroUtils)
set (CMAKE_VERBOSE_MAKEFILE ON)
set (CMAKE_CXX_STANDARD 20)

# Define C++ library and add all sources
add_library(${PACKAGE_NAME} SHARED
src/main/cpp/cpp-adapter.cpp
)

# Add Nitrogen specs :)
include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/ExpensifyNitroUtils+autolinking.cmake)

# Set up local includes
include_directories(
"src/main/cpp"
"../cpp"
)

find_library(LOG_LIB log)

# Link all libraries together
target_link_libraries(
${PACKAGE_NAME}
${LOG_LIB}
android # <-- Android core
)
129 changes: 129 additions & 0 deletions modules/ExpensifyNitroUtils/android/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
buildscript {
repositories {
google()
mavenCentral()
}

dependencies {
classpath "com.android.tools.build:gradle:7.2.1"
}
}

def reactNativeArchitectures() {
def value = rootProject.getProperties().get("reactNativeArchitectures")
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}

def isNewArchitectureEnabled() {
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
}

apply plugin: "com.android.library"
apply plugin: 'org.jetbrains.kotlin.android'
apply from: '../nitrogen/generated/android/ExpensifyNitroUtils+autolinking.gradle'

if (isNewArchitectureEnabled()) {
apply plugin: "com.facebook.react"
}

def getExtOrDefault(name) {
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["ExpensifyNitroUtils_" + name]
}

def getExtOrIntegerDefault(name) {
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["ExpensifyNitroUtils_" + name]).toInteger()
}

android {
namespace "com.margelo.nitro.utils"
ndkVersion getExtOrDefault("ndkVersion")
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")

defaultConfig {
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()

externalNativeBuild {
cmake {
cppFlags "-O2 -frtti -fexceptions -Wall -fstack-protector-all"
arguments "-DANDROID_STL=c++_shared"
abiFilters (*reactNativeArchitectures())
}
}
}

externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}

packagingOptions {
excludes = [
"META-INF",
"META-INF/**",
"**/libc++_shared.so",
"**/libfbjni.so",
"**/libjsi.so",
"**/libfolly_json.so",
"**/libfolly_runtime.so",
"**/libglog.so",
"**/libhermes.so",
"**/libhermes-executor-debug.so",
"**/libhermes_executor.so",
"**/libreactnativejni.so",
"**/libturbomodulejsijni.so",
"**/libreact_nativemodule_core.so",
"**/libjscexecutor.so"
]
}

buildFeatures {
buildConfig true
prefab true
}

buildTypes {
release {
minifyEnabled false
}
}

lintOptions {
disable "GradleCompatible"
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

sourceSets {
main {
if (isNewArchitectureEnabled()) {
java.srcDirs += [
// React Codegen files
"${project.buildDir}/generated/source/codegen/java"
]
}
}
}
}

repositories {
mavenCentral()
google()
}


dependencies {
// For < 0.71, this will be from the local maven repo
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+"

// Add a dependency on NitroModules
implementation project(":react-native-nitro-modules")
}

Loading