Skip to content
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

Pull from master to service_rewrite_2023 #1089

Merged
merged 66 commits into from
Oct 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
7ca6fcd
Updated README
niccolopaganini Sep 12, 2023
6822c67
multiple changes: 1. structure/ flow 2. added contents section 3. upd…
niccolopaganini Sep 23, 2023
8ea506d
build successful screenshot
niccolopaganini Sep 23, 2023
ed0e871
Update README.md
niccolopaganini Sep 23, 2023
54656b8
Update README.md
niccolopaganini Sep 23, 2023
290dcc5
Update README.md
niccolopaganini Sep 23, 2023
809fc5d
Update README.md
niccolopaganini Sep 23, 2023
b64ab62
Update README.md
niccolopaganini Sep 25, 2023
72922cf
1. Changed expected output for plugins 2. Removed tested on sub-secti…
niccolopaganini Sep 25, 2023
92ce707
1. reformatted to the original structure 2. removed floating links
niccolopaganini Sep 29, 2023
3d5e99b
Update README.md
niccolopaganini Sep 29, 2023
03bc5c3
Update README.md
niccolopaganini Sep 29, 2023
4d4d57d
Update README.md
niccolopaganini Sep 30, 2023
bbf18bd
Update README.md
niccolopaganini Sep 30, 2023
4da919f
Update README.md
niccolopaganini Sep 30, 2023
e8cbcb5
Update README.md
niccolopaganini Oct 1, 2023
498e04e
Delete Build_ss.png
niccolopaganini Oct 2, 2023
f4f3e68
Update README.md
niccolopaganini Oct 2, 2023
e1a6a32
Update README.md
niccolopaganini Oct 2, 2023
693852d
Update README.md
niccolopaganini Oct 2, 2023
8e28d47
add await to forceTransition process
Oct 3, 2023
cd8b383
rename component
Oct 4, 2023
877f8cb
move closing modal to reload function
Oct 4, 2023
304ceaa
only refresh on close, not on open editing modal
Oct 4, 2023
69f327a
band-aid fix for collect settings
Oct 9, 2023
32596a8
Updated README file: Restored to the original - 1. Removed versions 2…
niccolopaganini Oct 9, 2023
b6e3c65
Update README.md
niccolopaganini Oct 17, 2023
2b5735e
Update README.md
niccolopaganini Oct 17, 2023
cb954d1
Update README.md
niccolopaganini Oct 17, 2023
4643949
Apply suggestions from code review
JGreenlee Oct 18, 2023
685e1b6
Update README.md
JGreenlee Oct 18, 2023
047c2b7
Update README.md
JGreenlee Oct 18, 2023
5f9d189
Update README.md
JGreenlee Oct 18, 2023
c6dc2e5
Update README.md
JGreenlee Oct 18, 2023
96d29e6
Update README.md
JGreenlee Oct 18, 2023
079f4ea
Update README.md
JGreenlee Oct 18, 2023
bbb0f68
renameConsentPage to protocolPage
Oct 18, 2023
18f384f
alter timing of markConsented
Oct 18, 2023
58a50a6
Update README.md
niccolopaganini Oct 19, 2023
9d3965a
Update README.md
niccolopaganini Oct 19, 2023
ca0d569
clarify link to repo
shankari Oct 19, 2023
e68b4a8
Merge pull request #1071 from Abby-Wheelis/fix-notification-popup
shankari Oct 19, 2023
26f30d7
Merge pull request #1037 from niccolopaganini/label_dashboard_profile…
shankari Oct 20, 2023
aebb1c3
Build the release version of android when creating the build to upload
shankari Oct 21, 2023
284c47c
Improve error message
shankari Oct 21, 2023
a26698f
Run the CI on UI feature branches as well
shankari Oct 21, 2023
34cd182
Temporarily add `service_rewrite_2023` to the list of branches that w…
shankari Oct 21, 2023
07b7d20
Replace tabs with spaces
shankari Oct 21, 2023
d28d193
Merge pull request #1074 from shankari/setup_better_testing
shankari Oct 21, 2023
7945be4
Merge remote-tracking branch 'upstream/onboarding_routing_sept_2023' …
Oct 21, 2023
6da202c
add timeout to med accuracy
Oct 21, 2023
5386a2d
update variable name
Oct 22, 2023
a9d98ed
Bumped up version for new location permissions release
louisg1337 Oct 23, 2023
1b732f7
Merge pull request #1076 from Abby-Wheelis/edit-tracking-bug
shankari Oct 23, 2023
65a7550
Merge pull request #1078 from louisg1337/datacollection_plugin_versio…
shankari Oct 23, 2023
5265e20
Merge branch 'onboarding_routing_sept_2023' into master
shankari Oct 24, 2023
ea49921
add more url checks
Oct 24, 2023
5da3909
updates to check code
Oct 24, 2023
6360519
Update QrCode.tsx
Oct 24, 2023
2d930f8
Use only `emission` externally
shankari Oct 25, 2023
8dfcd29
Merge pull request #1081 from Abby-Wheelis/no-fishy-qr-codes
shankari Oct 25, 2023
29fac8a
fix naming error
Oct 25, 2023
17657a9
Merge pull request #1082 from Abby-Wheelis/collection-stuck-bug
shankari Oct 25, 2023
342e190
Merge pull request #1087 from e-mission/onboarding_routing_sept_2023
shankari Oct 28, 2023
9f5c02e
Change the path where we expect gems to be installed
shankari Oct 28, 2023
b8a5cce
Merge pull request #1088 from shankari/fix_ios_build
shankari Oct 29, 2023
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
3 changes: 3 additions & 0 deletions .github/workflows/serve-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ on:
branches:
- master
- maint_upgrade_**
- ui_feature_**
pull_request:
branches:
- master
- maint_upgrade_**
- ui_feature_**
- service_rewrite_2023
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '5 4 * * 0'
Expand Down
120 changes: 78 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ e-mission phone app

This is the phone component of the e-mission system.

:sparkles: This has now been upgraded to cordova android@9.0.0 and iOS@6.0.1 ([details](https://github.com/e-mission/e-mission-docs/issues/554)). It has also been upgraded to [android API 29](https://github.com/e-mission/e-mission-phone/pull/707/), [cordova-lib@10.0.0 and the most recent node and npm versions](https://github.com/e-mission/e-mission-phone/pull/708)It also now supports CI, so we should not have any build issues in the future. The limitations from the [previous upgrade](https://github.com/e-mission/e-mission-docs/issues/519) have all been resolved. This should be ready to build out of the box, after all the configuration files are changed.
:sparkles: This has been upgraded to the latest **Android**, **iOS**, **cordova-lib**, **node** and **npm** versions. __This is ready to build out of the box.__

The currently supported versions are in [`package.cordovabuild.json`](package.cordovabuild.json)

Additional Documentation
---
Expand All @@ -12,6 +14,14 @@ https://github.com/e-mission/e-mission-docs/tree/master/docs/e-mission-phone

**Issues:** Since this repository is part of a larger project, all issues are tracked [in the central docs repository](https://github.com/e-mission/e-mission-docs/issues). If you have a question, [as suggested by the open source guide](https://opensource.guide/how-to-contribute/#communicating-effectively), please file an issue instead of sending an email. Since issues are public, other contributors can try to answer the question and benefit from the answer.

## Contents
#### 1. [Updating the UI only](#updating-the-ui-only)
#### 2. [End to End Testing](#end-to-end-testing)
#### 3. [Updating the e-mission-* plugins or adding new plugins](#updating-the-e-mission--plugins-or-adding-new-plugins)
#### 4. [Creating logos](#creating-logos)
#### 5. [Beta-testing debugging](#beta-testing-debugging)
#### 6. [Contributing](#contributing)

Updating the UI only
---
[![osx-serve-install](https://github.com/e-mission/e-mission-phone/workflows/osx-serve-install/badge.svg)](https://github.com/e-mission/e-mission-phone/actions?query=workflow%3Aosx-serve-install)
Expand All @@ -23,30 +33,21 @@ If you want to make only UI changes, (as opposed to modifying the existing plugi
Run the setup script

```
$ bash setup/setup_serve.sh
```

**(optional)** Configure by changing the files in `www/json`.
Defaults are in `www/json/*.sample`

```
$ ls www/json/*.sample
$ cp www/json/startupConfig.json.sample www/json/startupConfig.json
$ cp ..... www/json/connectionConfig.json
bash setup/setup_serve.sh
```

### Activation (after install, and in every new shell)

```
$ source setup/activate_serve.sh
source setup/activate_serve.sh
```

### Running

1. Start the phonegap deployment server and note the URL(s) that the server is listening to.

```
$ npm run serve
npm run serve
....
[phonegap] listening on 10.0.0.14:3000
[phonegap] listening on 192.168.162.1:3000
Expand All @@ -56,7 +57,9 @@ $ source setup/activate_serve.sh
....
```

1. Change the devapp connection URL to one of these (e.g. 192.168.162.1:3000) and press "Connect"
1. Change the devapp connection URL and press "Connect"
- If you are running the devapp in an emulator on the same machine as the devapp server, you may simply use localhost, which would be `127.0.0.1:3000` on iOS and `10.0.2.2:3000` on Android.
- If you are running the devapp on a different device, you must type the address manually (e.g. `192.168.162.1:3000`). Note that this is a local IP address; the devices must be on the same network
1. The app will now display the version of e-mission app that is in your local directory
1. The console logs will be displayed back in the server window (prefaced by `[console]`)
1. Breakpoints can be added by connecting through the browser
Expand All @@ -65,7 +68,7 @@ $ source setup/activate_serve.sh

**Ta-da!** :gift: If you change any of the files in the `www` directory, the app will automatically be re-loaded without manually restarting either the server or the app :tada:

**Note1**: You may need to scroll up, past all the warnings about `Content Security Policy has been added` to find the port that the server is listening to.
**Note**: You may need to scroll up, past all the warnings about `Content Security Policy has been added` to find the port that the server is listening to.

End to end testing
---
Expand All @@ -78,14 +81,15 @@ A lot of the visualizations that we display in the phone client come from the se

are available in the [e-mission-server README](https://github.com/e-mission/e-mission-server/blob/master/README.md).

In order to make end to end testing easy, if the local server is started on a HTTP (versus HTTPS port), it is in development mode. By default, the phone app connects to the local server (localhost on iOS, [10.0.2.2 on android](https://stackoverflow.com/questions/5806220/how-to-connect-to-my-http-localhost-web-server-from-android-emulator-in-eclips)) with the `prompted-auth` authentication method. To connect to a different server, or to use a different authentication method, you need to create a `www/json/connectionConfig.json` file. More details on configuring authentication [can be found in the docs](https://github.com/e-mission/e-mission-docs/blob/master/docs/install/configuring_authentication.md).
The dynamic config (see https://github.com/e-mission/nrel-openpath-deploy-configs) controls the server endpoint that the phone app will connect to. If you are running the app in an emulator on the same machine as your local server (i.e. they share a `localhost`), you can use one of the `dev-emulator-*` configs (these configs have no `server` specified so `localhost` is assumed).

One advantage of using `skip` authentication in development mode is that any user email can be entered without a password. Developers can use one of the emails that they loaded test data for in step (3) above. So if the test data loaded was with `-u shankari@eecs.berkeley.edu`, then the login email for the phone app would also be `shankari@eecs.berkeley.edu`.
If you wish to connect to a different server, create your own config file according to https://github.com/e-mission/nrel-openpath-deploy-configs and specify the `server` field accordingly. The [deploy-configs](https://github.com/e-mission/nrel-openpath-deploy-configs/#testing-configs) repo has more information on this.

Updating the e-mission-\* plugins or adding new plugins
---
[![osx-build-ios](https://github.com/e-mission/e-mission-phone/actions/workflows/ios-build.yml/badge.svg)](https://github.com/e-mission/e-mission-phone/actions/workflows/ios-build.yml)
[![osx-build-android](https://github.com/e-mission/e-mission-phone/actions/workflows/android-build.yml/badge.svg)](https://github.com/e-mission/e-mission-phone/actions/workflows/android-build.yml)
[![osx-android-prereq-sdk-install](https://github.com/e-mission/e-mission-phone/actions/workflows/android-automated-sdk-install.yml/badge.svg)](https://github.com/e-mission/e-mission-phone/actions/workflows/android-automated-sdk-install.yml)

Pre-requisites
---
Expand All @@ -97,7 +101,7 @@ Pre-requisites
- Java 17. Tested with [OpenJDK 17 (Temurin) using Adoptium](https://adoptium.net).
- android SDK; install manually or use setup script below. Note that you only need to run this once **per computer**.
```
$ bash setup/prereq_android_sdk_install.sh
bash setup/prereq_android_sdk_install.sh
```

<details><summary>Expected output</summary>
Expand Down Expand Up @@ -142,27 +146,38 @@ Installing (one time only)
Run the setup script for the platform you want to build

```
$ bash setup/setup_android_native.sh
AND/OR
$ bash setup/setup_ios_native.sh
bash setup/setup_android_native.sh
```

**(optional)** Configure by changing the files in `www/json`.
Defaults are in `www/json/*.sample`

AND/OR
```
$ ls www/json/*.sample
$ cp www/json/startupConfig.json.sample www/json/startupConfig.json
$ cp ..... www/json/connectionConfig.json
bash setup/setup_ios_native.sh
```

### Activation (after install, and in every new shell)

```
$ source setup/activate_native.sh
source setup/activate_native.sh
```

### Activation (after install, and in every new shell)
<details><summary> Expected Output </summary>

```
Activating nvm
Using version <X version number>
Now using node <X version number> (npm <Y version>)
npm version = <Y version>
Adding cocoapods to the path
Verifying /Users/<username>/Library/Android/sk or /Users/<username>/Library/Android/sdk is set
Activating sdkman, and by default, gradle
Ensuring that we use the most recent version of the command line tools
Configuring the repo for building native code
Copied config.cordovabuild.xml -> config.xml and package.cordovabuild.json -> package.json
```

</details>


### Enable HTTP support on android by editing `config.xml`

If connecting to a development server over http, make sure to turn on http support on android

Expand All @@ -172,14 +187,29 @@ If connecting to a development server over http, make sure to turn on http suppo
</edit-config>
```

### Run in the emulator
### Building the app

We offer a set of build scripts to pick from, each of which: (i) bundle the JS with Webpack, and then (ii) proceed with a Cordova build.
The common use cases will be:

- `npm run build` (to build for production on both Android and iOS platforms)
- `npm run build-prod-android` (to build for production on Android platform only)
- `npm run build-prod-ios` (to build for production on iOS platform only)

There are a variety of options because Webpack can bundle the JS in 'production' or 'dev' mode, and you can build Android or iOS or both.
Find the full list of these scripts in [`package.cordovabuild.json`](package.cordovabuild.json)

<details><summary>Expected output (Android build)</summary>

```
$ npx cordova emulate ios
AND/OR
$ npx cordova emulate android
BUILD SUCCESSFUL in 2m 48s
52 actionable tasks: 52 executed
Built the following apk(s):
/Users/<Username>/e-mission-phone/platforms/android/app/build/outputs/apk/debug/app-debug.apk
```

</details>

Creating logos
---
If you are building your own version of the app, you must have your own logo to
Expand Down Expand Up @@ -223,28 +253,34 @@ Contributing

Add the main repo as upstream

$ git remote add upstream https://github.com/covid19database/phone-app.git
git remote add upstream https://github.com/e-mission/e-mission-phone.git

Create a new branch (IMPORTANT). Please do not submit pull requests from master

$ git checkout -b mybranch
git checkout -b mybranch

Make changes to the branch and commit them

$ git commit
git commit

Push the changes to your local fork

$ git push origin mybranch
git push origin mybranch

Generate a pull request from the UI

Address my review comments

Once I merge the pull request, pull the changes to your fork and delete the branch
```
$ git checkout master
$ git pull upstream master
$ git push origin master
$ git branch -d mybranch
git checkout master
```
```
git pull upstream master
```
```
git push origin master
```
```
git branch -d <branch>
```
4 changes: 2 additions & 2 deletions bin/sign_and_align_keys.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ PROJECT=$1
VERSION=$2

if [[ $# -eq 0 ]]; then
echo "No arguments supplied"
echo "sign_and_align_keys <PROJECT> <VERSION>"
exit 1
fi

# Sign and release the L+ version
# Make sure the highest supported version has the biggest version code
npm run build-prod-android
npm run build-prod-android-release
# cp platforms/android/app/build/outputs/apk/release/app-release-unsigned.aab platforms/android/app/build/outputs/apk/app-release-signed-unaligned.apk
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore ../config_files/production.keystore ./platforms/android/app/build/outputs/bundle/release/app-release.aab androidproductionkey
cp platforms/android/app/build/outputs/bundle/release/app-release.aab $1-build-$2.aab
Expand Down
2 changes: 1 addition & 1 deletion package.cordovabuild.json
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@
"cordova-plugin-app-version": "0.1.14",
"cordova-plugin-customurlscheme": "5.0.2",
"cordova-plugin-device": "2.1.0",
"cordova-plugin-em-datacollection": "git+https://github.com/e-mission/e-mission-data-collection.git#v1.8.0",
"cordova-plugin-em-datacollection": "git+https://github.com/e-mission/e-mission-data-collection.git#v1.8.1",
"cordova-plugin-em-opcodeauth": "git+https://github.com/e-mission/cordova-jwt-auth.git#v1.7.2",
"cordova-plugin-em-server-communication": "git+https://github.com/e-mission/cordova-server-communication.git#v1.2.6",
"cordova-plugin-em-serversync": "git+https://github.com/e-mission/cordova-server-sync.git#v1.3.2",
Expand Down
2 changes: 1 addition & 1 deletion setup/export_shared_dep_versions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ export GRADLE_VERSION=7.6
export OSX_EXP_VERSION=12

export NVM_DIR="$HOME/.nvm"
export RUBY_PATH=$HOME/.gem/ruby/$RUBY_VERSION.0/bin
export RUBY_PATH=$HOME/.local/share/gem/ruby/$RUBY_VERSION.0/bin
6 changes: 3 additions & 3 deletions www/js/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ const App = () => {
<AppContext.Provider value={appContextValue}>
{appContent}

{ /* If we are past the consent page (route > CONSENT), the permissions popup can show if needed.
This also includes if onboarding is DONE altogether (because "DONE" is > "CONSENT") */ }
{(onboardingState && onboardingState.route > OnboardingRoute.CONSENT) &&
{ /* If we are fully consented, (route > PROTOCOL), the permissions popup can show if needed.
This also includes if onboarding is DONE altogether (because "DONE" is > "PROTOCOL") */ }
{(onboardingState && onboardingState.route > OnboardingRoute.PROTOCOL) &&
<AppStatusModal permitVis={permissionsPopupVis} setPermitVis={setPermissionsPopupVis} />
}
</AppContext.Provider>
Expand Down
5 changes: 5 additions & 0 deletions www/js/components/QrCode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ export function shareQR(message) {
}

const QrCode = ({ value, ...rest }) => {
let hasLink = value.toString().includes("//");
if(!hasLink) {
value = "emission://login_token?token=" + value;
}

return <QRCode className="qr-code" value={value} style={[{ width: '100%', height: '100%' }, rest.style] as any} {...rest} />;
};

Expand Down
11 changes: 5 additions & 6 deletions www/js/control/ControlCollectionHelper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ type collectionConfig = {

export async function forceTransition(transition) {
try {
let result = forceTransitionWrapper(transition);
let result = await forceTransitionWrapper(transition);
window.alert('success -> '+result);
} catch (err) {
window.alert('error -> '+err);
Expand Down Expand Up @@ -132,7 +132,7 @@ const formatConfigForDisplay = function(config, accuracyOptions) {
return retVal;
}

const ControlSyncHelper = ({ editVis, setEditVis }) => {
const ControlCollectionHelper = ({ editVis, setEditVis }) => {
const {colors} = useTheme();
const Logger = getAngularService("Logger");

Expand Down Expand Up @@ -172,7 +172,7 @@ const ControlSyncHelper = ({ editVis, setEditVis }) => {
console.log("new config = ", localConfig);
try{
let set = await setConfig(localConfig);
//TODO find way to not need control.update.complete event broadcast
setEditVis(false);
} catch(err) {
Logger.displayError("Error while setting collection config", err);
}
Expand Down Expand Up @@ -268,8 +268,7 @@ const ControlSyncHelper = ({ editVis, setEditVis }) => {
{geofenceComponent}
</Dialog.Content>
<Dialog.Actions>
<Button onPress={() => {saveAndReload();
setEditVis(false);}}>
<Button onPress={() => {saveAndReload()}}>
Save
</Button>
<Button onPress={() => setEditVis(false)}>Cancel</Button>
Expand All @@ -282,4 +281,4 @@ const ControlSyncHelper = ({ editVis, setEditVis }) => {
);
};

export default ControlSyncHelper;
export default ControlCollectionHelper;
Loading
Loading