diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index fef76b63..00000000
--- a/.eslintignore
+++ /dev/null
@@ -1,10 +0,0 @@
-node_modules
-__tests__/
-.vscode/
-android/
-coverage/
-ios/
-.expo
-.expo-shared
-docs/
-cli/
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index 41bfa7d3..00000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,104 +0,0 @@
-const path = require('path');
-
-module.exports = {
- extends: ['expo', 'plugin:tailwindcss/recommended', 'prettier'],
- plugins: [
- 'prettier',
- 'unicorn',
- '@typescript-eslint',
- 'unused-imports',
- 'tailwindcss',
- 'simple-import-sort',
- 'eslint-plugin-react-compiler',
- ],
- parserOptions: {
- project: './tsconfig.json',
- },
- rules: {
- 'prettier/prettier': 'warn',
- 'unicorn/filename-case': [
- 'error',
- {
- case: 'kebabCase',
- ignore: ['/android', '/ios'],
- },
- ],
- 'max-params': ['error', 3], // Limit the number of parameters in a function to use object instead
- 'max-lines-per-function': ['error', 70],
- 'react/display-name': 'off',
- 'react/no-inline-styles': 'off',
- 'react/destructuring-assignment': 'off', // Vscode doesn't support automatically destructuring, it's a pain to add a new variable
- 'react/require-default-props': 'off', // Allow non-defined react props as undefined
- '@typescript-eslint/comma-dangle': 'off', // Avoid conflict rule between Eslint and Prettier
- '@typescript-eslint/consistent-type-imports': [
- 'warn',
- {
- prefer: 'type-imports',
- fixStyle: 'inline-type-imports',
- disallowTypeAnnotations: true,
- },
- ], // Ensure `import type` is used when it's necessary
- 'import/prefer-default-export': 'off', // Named export is easier to refactor automatically
- 'import/no-cycle': ['error', { maxDepth: '∞' }],
- 'tailwindcss/classnames-order': [
- 'warn',
- {
- officialSorting: true,
- },
- ], // Follow the same ordering as the official plugin `prettier-plugin-tailwindcss`
- 'simple-import-sort/imports': 'error', // Import configuration for `eslint-plugin-simple-import-sort`
- 'simple-import-sort/exports': 'error', // Export configuration for `eslint-plugin-simple-import-sort`
- '@typescript-eslint/no-unused-vars': 'off',
- 'tailwindcss/no-custom-classname': 'off',
- 'unused-imports/no-unused-imports': 'error',
- 'unused-imports/no-unused-vars': [
- 'error',
- {
- argsIgnorePattern: '^_',
- varsIgnorePattern: '^_',
- caughtErrorsIgnorePattern: '^_',
- },
- ],
- },
- overrides: [
- // Configuration for translations files (i18next)
- {
- files: ['src/translations/*.json'],
- extends: ['plugin:i18n-json/recommended'],
- rules: {
- 'i18n-json/valid-message-syntax': [
- 2,
- {
- syntax: path.resolve('./scripts/i18next-syntax-validation.js'),
- },
- ],
- 'i18n-json/valid-json': 2,
- 'i18n-json/sorted-keys': [
- 2,
- {
- order: 'asc',
- indentSpaces: 2,
- },
- ],
- 'i18n-json/identical-keys': [
- 2,
- {
- filePath: path.resolve('./src/translations/en.json'),
- },
- ],
- 'prettier/prettier': [
- 0,
- {
- singleQuote: true,
- endOfLine: 'auto',
- },
- ],
- },
- },
- {
- // Configuration for testing files
- files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],
- extends: ['plugin:testing-library/react'],
- },
- ],
-};
diff --git a/__mocks__/expo-localization.ts b/__mocks__/expo-localization.ts
new file mode 100644
index 00000000..1fc3f945
--- /dev/null
+++ b/__mocks__/expo-localization.ts
@@ -0,0 +1,4 @@
+export const locale = 'en-US';
+export const locales = ['en-US'];
+export const timezone = 'UTC';
+export const isRTL = false;
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 39e5eb17..7879992f 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -14,6 +14,7 @@ react {
hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc"
codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
+ enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean()
// Use Expo CLI to bundle the app, this ensures the Metro config
// works correctly with Expo projects.
cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim())
@@ -78,7 +79,7 @@ def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInRelea
* 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 {
ndkVersion rootProject.ext.ndkVersion
@@ -156,15 +157,15 @@ dependencies {
if (isGifEnabled) {
// For animated gif support
- implementation("com.facebook.fresco:animated-gif:${reactAndroidLibs.versions.fresco.get()}")
+ implementation("com.facebook.fresco:animated-gif:${expoLibs.versions.fresco.get()}")
}
if (isWebpEnabled) {
// For webp support
- implementation("com.facebook.fresco:webpsupport:${reactAndroidLibs.versions.fresco.get()}")
+ implementation("com.facebook.fresco:webpsupport:${expoLibs.versions.fresco.get()}")
if (isWebpAnimatedEnabled) {
// Animated webp support
- implementation("com.facebook.fresco:animated-webp:${reactAndroidLibs.versions.fresco.get()}")
+ implementation("com.facebook.fresco:animated-webp:${expoLibs.versions.fresco.get()}")
}
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index bc987bba..e172a53a 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -25,7 +25,6 @@
-
diff --git a/android/app/src/main/java/com/obytes/development/MainApplication.kt b/android/app/src/main/java/com/obytes/development/MainApplication.kt
index 2c05c424..3f35bc8d 100644
--- a/android/app/src/main/java/com/obytes/development/MainApplication.kt
+++ b/android/app/src/main/java/com/obytes/development/MainApplication.kt
@@ -1,4 +1,5 @@
package com.obytes.development
+import com.facebook.react.common.assets.ReactFontManager
import android.app.Application
import android.content.res.Configuration
@@ -24,7 +25,7 @@ class MainApplication : Application(), ReactApplication {
override fun getPackages(): List {
val packages = PackageList(this).packages
// Packages that cannot be autolinked yet can be added manually here, for example:
- // packages.add(new MyReactNativePackage());
+ // packages.add(MyReactNativePackage())
return packages
}
@@ -42,6 +43,9 @@ class MainApplication : Application(), ReactApplication {
override fun onCreate() {
super.onCreate()
+ // @generated begin xml-fonts-init - expo prebuild (DO NOT MODIFY) sync-da39a3ee5e6b4b0d3255bfef95601890afd80709
+
+ // @generated end xml-fonts-init
SoLoader.init(this, OpenSourceMergedSoMapping)
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index 6351ad73..4a4b3078 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -1,15 +1,8 @@
-