Skip to content

Commit 9c6b0ba

Browse files
AhmedSobhy01LoayAhmed304Exo1iHelanaNadyYoussefwafa7
authored
chore(release): v3.0.0 - [CU-869bebnqf] (#200)
Co-authored-by: Loay Ahmed <loayahmed304@gmail.com> Co-authored-by: Youssef Noser <121557650+Exo1i@users.noreply.github.com> Co-authored-by: Helana Nady <Helana.saif04@eng-st.cu.edu.eg> Co-authored-by: YoussefWafa <149392734+Youssefwafa7@users.noreply.github.com> Co-authored-by: tonynagyy <nagytony2@gmail.com> Co-authored-by: helana <helananady7@gmail.com> Co-authored-by: Antonious Nagy <149241455+tonynagyy@users.noreply.github.com> Co-authored-by: Saif <78622218+im-saif@users.noreply.github.com> Co-authored-by: Saif <saifeldin402@gmail.com>
1 parent 85c1fba commit 9c6b0ba

440 files changed

Lines changed: 40260 additions & 5158 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,3 @@ EXPO_PUBLIC_GITHUB_OAUTH_CLIENT_ID=
1111
EXPO_PUBLIC_GITHUB_OAUTH_REDIRECT=
1212

1313
EXPO_PUBLIC_RECAPTCHA_SITE_KEY=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
14-
15-
TESTING_EMAIL=
16-
TESTING_PASSWORD=
17-
TESTING_LONG_EMAIL=
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Nightly Release Workflow
2+
on:
3+
schedule:
4+
- cron: "20 23 * * *" # daily at 23:20 UTC
5+
workflow_dispatch:
6+
push:
7+
branches:
8+
- chore/nightly-release-workflow
9+
10+
permissions:
11+
contents: write
12+
pull-requests: write
13+
issues: write
14+
15+
jobs:
16+
build:
17+
runs-on: self-hosted
18+
steps:
19+
- uses: actions/checkout@v4
20+
with:
21+
fetch-depth: 0
22+
fetch-tags: true
23+
ref: dev
24+
25+
- name: Enable Corepack
26+
run: corepack enable
27+
28+
- name: Setup pnpm
29+
run: corepack prepare pnpm@latest --activate
30+
31+
- uses: actions/setup-node@v4
32+
with:
33+
node-version: 22
34+
cache: "pnpm"
35+
cache-dependency-path: "**/pnpm-lock.yaml"
36+
- name: Install dependencies
37+
run: pnpm install --frozen-lockfile
38+
39+
- name: Install EAS
40+
run: npm i -g eas-cli
41+
env:
42+
EXPO_TOKEN: ${{ secrets.EAS_ACCESS_TOKEN }}
43+
44+
- name: Build using EAS Cloud
45+
run: eas build --platform android --profile production --non-interactive
46+
env:
47+
EXPO_TOKEN: ${{ secrets.EAS_ACCESS_TOKEN }}
48+
- name: Get latest Android APK
49+
run: |
50+
echo "Fetching latest finished build..."
51+
BUILD_JSON=$(eas build:list --platform android --limit 1 --status finished --json --non-interactive)
52+
echo "$BUILD_JSON"
53+
BUILD_URL=$(echo "$BUILD_JSON" | jq -r '.[0].artifacts.buildUrl')
54+
echo "Downloading APK from $BUILD_URL"
55+
curl -L -o ./app.apk "$BUILD_URL"
56+
env:
57+
EXPO_TOKEN: ${{ secrets.EAS_ACCESS_TOKEN }}
58+
59+
- name: Create Nightly Release & Upload APK
60+
uses: softprops/action-gh-release@v2
61+
with:
62+
tag_name: nightly-${{ github.run_number }}
63+
name: "Nightly Build #${{ github.run_number }}"
64+
generate_release_notes: true
65+
files: app.apk
66+
env:
67+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/testers-checklist.yaml

Lines changed: 0 additions & 45 deletions
This file was deleted.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ yarn-error.*
3333

3434
# local env files
3535
.env
36+
.env.prod
37+
.env.staging
3638
.env*.local
3739

3840
# Firebase
@@ -52,3 +54,5 @@ coverage
5254
src/__tests__/__snapshots__/
5355
__snapshots__/
5456
.env
57+
.env.prod
58+
.env.staging

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,5 @@
4040
"[xml]": {
4141
"editor.defaultFormatter": "DotJoshJohnson.xml"
4242
},
43+
"postman.settings.dotenv-detection-notification-visibility": false,
4344
}

app.config.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
export default ({ config }) => ({
2+
...config,
3+
name: 'Raven',
4+
slug: 'raven-gh',
5+
version: '1.0.1',
6+
orientation: 'portrait',
7+
icon: './assets/images/light-raven.png',
8+
scheme: 'raven',
9+
userInterfaceStyle: 'automatic',
10+
newArchEnabled: true,
11+
12+
splash: {
13+
image: './assets/images/light-raven.png',
14+
resizeMode: 'contain',
15+
backgroundColor: '#ffffff',
16+
dark: {
17+
image: './assets/images/dark-raven.png',
18+
resizeMode: 'contain',
19+
backgroundColor: '#000000',
20+
},
21+
},
22+
23+
android: {
24+
googleServicesFile: process.env.GOOGLE_SERVICES_JSON ?? './google-services.json',
25+
adaptiveIcon: {
26+
backgroundColor: '#E6F4FE',
27+
foregroundImage: './assets/images/light-raven.png',
28+
},
29+
userInterfaceStyle: 'automatic',
30+
edgeToEdgeEnabled: true,
31+
predictiveBackGestureEnabled: false,
32+
package: 'space.cmp27.raven',
33+
buildType: 'apk',
34+
},
35+
36+
web: {
37+
favicon: './assets/images/light-raven.png',
38+
},
39+
40+
plugins: [
41+
'expo-secure-store',
42+
'expo-localization',
43+
[
44+
'expo-media-library',
45+
{
46+
photosPermission: 'Allow Raven to access your photos.',
47+
savePhotosPermission: 'Allow Raven to save photos.',
48+
isAccessMediaLocationEnabled: true,
49+
granularPermissions: ['video', 'photo'],
50+
},
51+
],
52+
53+
[
54+
'expo-image-picker',
55+
{
56+
photosPermission: 'The app accesses your photos to let you share them with your friends.',
57+
},
58+
],
59+
60+
[
61+
'expo-video',
62+
{
63+
supportsBackgroundPlayback: false,
64+
supportsPictureInPicture: true,
65+
},
66+
],
67+
],
68+
69+
ios: {
70+
supportsTablet: true,
71+
bundleIdentifier: 'com.raven.app',
72+
infoPlist: {
73+
NSPhotoLibraryUsageDescription:
74+
'We need access to your photo library so you can choose a profile picture and header.',
75+
NSPhotoLibraryAddUsageDescription:
76+
'We need to save images to your photo library when you download or export.',
77+
NSCameraUsageDescription: 'We need access to your camera so you can take a profile picture.',
78+
},
79+
},
80+
81+
experiments: {
82+
typedRoutes: true,
83+
reactCompiler: true,
84+
},
85+
86+
extra: {
87+
eas: {
88+
projectId: 'ea25ec1e-cfdd-4732-b80e-6ebf6ebe363b',
89+
},
90+
},
91+
});

app.json

Lines changed: 0 additions & 82 deletions
This file was deleted.

build-debug.sh

100644100755
File mode changed.

e2e/pageobjects/Home pages/ForYouScreen.page.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { $, driver } from '@wdio/globals';
1+
import { $ } from '@wdio/globals';
22

33
class ForYouScreen {
44
get forYouTab() {
@@ -8,11 +8,12 @@ class ForYouScreen {
88
return $('android=new UiSelector().text("Following")');
99
}
1010
get sideMenuButton() {
11-
return { x: 46, y: 156 };
11+
return $('~open-drawer-button');
1212
}
1313

1414
async openSideMenu() {
15-
await driver.execute('mobile: clickGesture', this.sideMenuButton);
15+
await this.sideMenuButton.waitForDisplayed();
16+
await this.sideMenuButton.click();
1617
}
1718

1819
async switchToFollowingTab() {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { $, driver } from '@wdio/globals';
2+
3+
class OnboardingBioScreen {
4+
get screenTitle() {
5+
return $('android=new UiSelector().text("Describe yourself")');
6+
}
7+
get bioInput() {
8+
return $('~onboarding-bio-input');
9+
}
10+
get nextButton() {
11+
return $('~onboarding-bio-next-button');
12+
}
13+
get skipButton() {
14+
return $('android=new UiSelector().text("Skip for now")');
15+
}
16+
17+
async clickNext() {
18+
await this.nextButton.waitForDisplayed();
19+
await this.nextButton.click();
20+
}
21+
22+
async clickSkip() {
23+
await this.skipButton.waitForDisplayed();
24+
await this.skipButton.click();
25+
}
26+
27+
async isNextButtonEnabled() {
28+
await this.nextButton.waitForDisplayed();
29+
return this.nextButton.isEnabled();
30+
}
31+
32+
async isDisplayed() {
33+
return (
34+
(await this.screenTitle.isDisplayed()) &&
35+
(await this.bioInput.isDisplayed()) &&
36+
(await this.nextButton.isDisplayed()) &&
37+
(await this.skipButton.isDisplayed())
38+
);
39+
}
40+
41+
async enterBio(bioText) {
42+
await this.bioInput.waitForDisplayed();
43+
await this.bioInput.setValue(bioText);
44+
}
45+
46+
async goBack() {
47+
await driver.back();
48+
await driver.pause(500);
49+
}
50+
}
51+
52+
export default new OnboardingBioScreen();

0 commit comments

Comments
 (0)