Skip to content

Commit 2afbe6e

Browse files
committed
feat: Update version to 2.4.4 with bug fixes and stability improvements
1 parent 9e41b2e commit 2afbe6e

File tree

13 files changed

+346
-196
lines changed

13 files changed

+346
-196
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: Create Production Builds
2+
3+
jobs:
4+
build_android:
5+
type: build # This job type creates a production build for Android
6+
params:
7+
platform: android

.easignore

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# dependencies
2+
3+
node_modules/
4+
5+
# Expo
6+
7+
.expo/
8+
dist/
9+
web-build/
10+
expo-env.d.ts
11+
12+
# Native
13+
14+
.kotlin/
15+
*.orig.*
16+
*.jks
17+
*.p8
18+
*.p12
19+
*.key
20+
*.mobileprovision
21+
22+
# Metro
23+
24+
.metro-health-check*
25+
26+
# debug
27+
28+
npm-debug.*
29+
yarn-debug.*
30+
yarn-error.*
31+
32+
# macOS
33+
34+
.DS_Store
35+
*.pem
36+
37+
# local env files
38+
39+
.env*.local
40+
41+
# typescript
42+
43+
*.tsbuildinfo
44+
45+
# caller-id module build
46+
47+
modules/caller-id/android/build/
48+
49+
# APK files (keep generated APKs out of source control)
50+
51+
*.apk
52+
*.aab
53+
54+
# Android build files
55+
56+
android/app/build/
57+
android/build/
58+
android/.gradle/
59+
android/local.properties
60+
61+
# Android release files
62+
63+
android/app/release/
64+
65+
# Test files
66+
67+
test.ts

README.md

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/BioHazard786)
12
[![IzzyOnDroid][izzyondroid-shield]][izzyondroid-url]
23
[![Reproducible][reproducible-shield]][reproducible-url]
34
[![Releases][releases-shield]][releases-url]
45

6+
[![Sponsors][sponsors-shield]][sponsors-url]
57
[![Contributors][contributors-shield]][contributors-url]
68
[![Forks][forks-shield]][forks-url]
79
[![Stargazers][stars-shield]][stars-url]
@@ -14,15 +16,30 @@
1416
</a>
1517
<br />
1618
<br />
17-
<a href="https://github.com/BioHazard786/Alternate/releases">Download</a>
18-
·
1919
<a href="https://github.com/BioHazard786/Alternate/issues">Report Bug</a>
2020
·
2121
<a href="https://github.com/BioHazard786/Alternate/issues">Request Feature</a>
2222
<br />
2323
<br />
2424
</div>
2525

26+
<div align="center">
27+
<a href="https://apt.izzysoft.de/packages/com.lulu786.Alternate">
28+
<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" width="170">
29+
</a>
30+
<a href="https://github.com/BioHazard786/Alternate/releases">
31+
<img src="get-it-on-github.png" width="170">
32+
</a>
33+
<a href="https://www.openapk.net/alternate/com.lulu786.Alternate/">
34+
<img src="https://www.openapk.net/images/openapk-badge.png" width="170">
35+
</a>
36+
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/BioHazard786/Alternate/">
37+
<img src="get-it-on-obtainium.png" width="170">
38+
</a>
39+
</div>
40+
41+
<br />
42+
2643
# Alternate - Local Caller ID Detector
2744

2845
A privacy-focused React Native app that helps you identify unknown callers without cluttering your device's main contact list. Perfect for temporary number storage when you need to know who's calling but don't want the number to appear in WhatsApp, Telegram, or other messaging apps.
@@ -66,12 +83,7 @@ When you receive calls from unknown numbers but don't want to save them to your
6683
<img src="./mockups/image5.png" alt="Directory Support" width="200" style="margin:10px;" />
6784
</p>
6885

69-
## Download
70-
71-
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" width="170">](https://apt.izzysoft.de/packages/com.lulu786.Alternate)
72-
[<img src="get-it-on-github.png" width="170">](https://github.com/BioHazard786/Alternate/releases)
73-
[<img src="https://www.openapk.net/images/openapk-badge.png" width="170">](https://www.openapk.net/alternate/com.lulu786.Alternate/)
74-
[<img src="get-it-on-obtainium.png" width="170">](https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/BioHazard786/Alternate/)
86+
<!-- ## Download -->
7587

7688
## Installation
7789

@@ -247,6 +259,8 @@ _Keep your contact list clean while never missing an important call again!_
247259
<!-- MARKDOWN LINKS & IMAGES -->
248260
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
249261

262+
[sponsors-shield]: https://img.shields.io/github/sponsors/BioHazard786?label=Sponsor&style=for-the-badge
263+
[sponsors-url]: https://github.com/sponsors/BioHazard786
250264
[contributors-shield]: https://img.shields.io/github/contributors/BioHazard786/Alternate.svg?style=for-the-badge
251265
[contributors-url]: https://github.com/BioHazard786/Alternate/graphs/contributors
252266
[forks-shield]: https://img.shields.io/github/forks/BioHazard786/Alternate.svg?style=for-the-badge

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ android {
101101
applicationId 'com.lulu786.Alternate'
102102
minSdkVersion rootProject.ext.minSdkVersion
103103
targetSdkVersion rootProject.ext.targetSdkVersion
104-
versionCode 11
105-
versionName "2.4.3"
104+
versionCode 12
105+
versionName "2.4.4"
106106
}
107107

108108
signingConfigs {

android/app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2-
xmlns:tools="http://schemas.android.com/tools">
3-
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
42
<queries>
53
<intent>
64
<action android:name="android.intent.action.VIEW"/>
@@ -9,10 +7,12 @@
97
</intent>
108
</queries>
119
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:supportsRtl="true">
12-
<meta-data android:name="expo.modules.updates.ENABLED" android:value="false"/>
10+
<meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
1311
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
1412
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
15-
<activity android:name=".MainActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:exported="true" android:screenOrientation="portrait">
13+
<meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://u.expo.dev/0f06f9c0-1e64-4c3a-aa39-4724ca395d4f"/>
14+
<meta-data android:name="expo.modules.updates.EXPO_RUNTIME_VERSION" android:value="@string/expo_runtime_version"/>
15+
<activity android:name=".MainActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode|colorMode|density|fontScale|navigation|touchscreen" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:exported="true" android:screenOrientation="portrait">
1616
<intent-filter>
1717
<action android:name="android.intent.action.MAIN"/>
1818
<category android:name="android.intent.category.LAUNCHER"/>
@@ -26,4 +26,4 @@
2626
</intent-filter>
2727
</activity>
2828
</application>
29-
</manifest>
29+
</manifest>

android/app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
<string name="expo_system_ui_user_interface_style" translatable="false">automatic</string>
44
<string name="expo_splash_screen_resize_mode" translatable="false">contain</string>
55
<string name="expo_splash_screen_status_bar_translucent" translatable="false">false</string>
6+
<string name="expo_runtime_version">1.0.0</string>
67
</resources>

app.json

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"expo": {
33
"name": "Alternate",
4-
"slug": "Alternate",
5-
"version": "2.4.3",
4+
"slug": "alternate",
5+
"version": "2.4.4",
66
"orientation": "portrait",
77
"scheme": "alternate",
88
"userInterfaceStyle": "automatic",
@@ -14,18 +14,26 @@
1414
"dark": "./assets/icon/ios-dark.png",
1515
"light": "./assets/icon/ios-light.png",
1616
"tinted": "./assets/icon/ios-tinted.png"
17+
},
18+
"runtimeVersion": {
19+
"policy": "appVersion"
1720
}
1821
},
1922
"android": {
20-
"versionCode": 11,
23+
"versionCode": 12,
2124
"adaptiveIcon": {
2225
"foregroundImage": "./assets/icon/adaptive-icon.png",
2326
"monochromeImage": "./assets/icon/adaptive-icon.png",
2427
"backgroundColor": "#ffffff"
2528
},
2629
"icon": "./assets/icon/adaptive-icon.png",
2730
"edgeToEdgeEnabled": true,
28-
"package": "com.lulu786.Alternate"
31+
"package": "com.lulu786.Alternate",
32+
"permissions": [
33+
"android.permission.RECORD_AUDIO",
34+
"android.permission.RECORD_AUDIO"
35+
],
36+
"runtimeVersion": "1.0.0"
2937
},
3038
"web": {
3139
"bundler": "metro",
@@ -61,8 +69,12 @@
6169
"extra": {
6270
"router": {},
6371
"eas": {
64-
"projectId": "a6216e1e-0a05-49b2-ba25-b7ea90ab8d58"
72+
"projectId": "0f06f9c0-1e64-4c3a-aa39-4724ca395d4f"
6573
}
74+
},
75+
"owner": "lulu786",
76+
"updates": {
77+
"url": "https://u.expo.dev/0f06f9c0-1e64-4c3a-aa39-4724ca395d4f"
6678
}
6779
}
6880
}

app/_layout.tsx

Lines changed: 72 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -6,83 +6,87 @@ import useContactStore from "@/store/contactStore";
66
import { ThemeProvider } from "@react-navigation/native";
77
import { SplashScreen, Stack } from "expo-router";
88
import { StatusBar } from "expo-status-bar";
9-
import { useEffect, useState } from "react";
9+
import { useEffect, useRef, useState } from "react";
1010
import { SheetProvider } from "react-native-actions-sheet";
1111
import { GestureHandlerRootView } from "react-native-gesture-handler";
1212
import { PaperProvider } from "react-native-paper";
1313

1414
SplashScreen.preventAutoHideAsync();
1515

1616
export default function RootLayout() {
17-
const paperTheme = useTheme();
18-
const fetchContacts = useContactStore.use.fetchContacts();
19-
const [isReady, setIsReady] = useState(false);
17+
const paperTheme = useTheme();
18+
const fetchContacts = useContactStore.use.fetchContacts();
19+
const [isReady, setIsReady] = useState(false);
20+
const initializationRef = useRef(false);
2021

21-
// Start fetching contacts during app initialization (splash screen time)
22-
useEffect(() => {
23-
const initializeApp = async () => {
24-
try {
25-
await fetchContacts();
26-
} catch (error) {
27-
console.error("Error during app initialization:", error);
28-
} finally {
29-
setIsReady(true);
30-
await SplashScreen.hideAsync();
31-
}
32-
};
22+
// Start fetching contacts during app initialization (splash screen time)
23+
useEffect(() => {
24+
if (initializationRef.current) return; // Prevent re-initialization
3325

34-
initializeApp();
35-
}, []);
26+
const initializeApp = async () => {
27+
try {
28+
initializationRef.current = true;
29+
await fetchContacts();
30+
} catch (error) {
31+
console.error("Error during app initialization:", error);
32+
} finally {
33+
setIsReady(true);
34+
await SplashScreen.hideAsync();
35+
}
36+
};
3637

37-
if (!isReady) {
38-
return null; // Keep showing splash screen
39-
}
38+
initializeApp();
39+
}, [fetchContacts]);
4040

41-
return (
42-
<GestureHandlerRootView style={{ flex: 1 }}>
43-
<ErrorBoundary>
44-
<PaperProvider theme={paperTheme}>
45-
<ThemeProvider value={paperTheme}>
46-
<SheetProvider context="global">
47-
<Stack
48-
screenOptions={{
49-
header: (props) => <CustomNavigationBar {...props} />,
50-
}}
51-
>
52-
<Stack.Screen
53-
name="new-contact"
54-
options={{
55-
title: "Add Contact",
56-
header: (props) => (
57-
<CustomNavigationBar {...props} mode="small" />
58-
),
59-
}}
60-
/>
61-
<Stack.Screen
62-
name="edit-contact"
63-
options={{
64-
title: "Edit Contact",
65-
header: (props) => (
66-
<CustomNavigationBar
67-
{...props}
68-
mode="small"
69-
popToTop={true}
70-
/>
71-
),
72-
}}
73-
/>
74-
<Stack.Screen
75-
name="settings"
76-
options={{
77-
title: "Settings",
78-
}}
79-
/>
80-
</Stack>
81-
</SheetProvider>
82-
</ThemeProvider>
83-
<StatusBar style={paperTheme.dark ? "light" : "dark"} />
84-
</PaperProvider>
85-
</ErrorBoundary>
86-
</GestureHandlerRootView>
87-
);
41+
if (!isReady) {
42+
return null; // Keep showing splash screen
43+
}
44+
45+
return (
46+
<GestureHandlerRootView style={{ flex: 1 }}>
47+
<ErrorBoundary>
48+
<PaperProvider theme={paperTheme}>
49+
<ThemeProvider value={paperTheme}>
50+
<SheetProvider context="global">
51+
<Stack
52+
screenOptions={{
53+
header: (props) => <CustomNavigationBar {...props} />,
54+
}}
55+
>
56+
<Stack.Screen
57+
name="new-contact"
58+
options={{
59+
title: "Add Contact",
60+
header: (props) => (
61+
<CustomNavigationBar {...props} mode="small" />
62+
),
63+
}}
64+
/>
65+
<Stack.Screen
66+
name="edit-contact"
67+
options={{
68+
title: "Edit Contact",
69+
header: (props) => (
70+
<CustomNavigationBar
71+
{...props}
72+
mode="small"
73+
popToTop={true}
74+
/>
75+
),
76+
}}
77+
/>
78+
<Stack.Screen
79+
name="settings"
80+
options={{
81+
title: "Settings",
82+
}}
83+
/>
84+
</Stack>
85+
</SheetProvider>
86+
</ThemeProvider>
87+
<StatusBar style={paperTheme.dark ? "light" : "dark"} />
88+
</PaperProvider>
89+
</ErrorBoundary>
90+
</GestureHandlerRootView>
91+
);
8892
}

0 commit comments

Comments
 (0)