Skip to content

Conversation

zatteo
Copy link
Member

@zatteo zatteo commented Sep 23, 2025

### ✨ Features

*

### 🐛 Bug Fixes

*

### 🔧 Tech

*

Checklist

Before merging this PR, the following things must have been done if relevant:

  • Tested on iOS
  • Tested on Android
  • Test coverage
  • README and documentation

zatteo and others added 30 commits November 15, 2024 14:50
androidx.annotation:annotation:1.9.1 breaks our build, maybe
because of kotlin version

See https://developer.android.com/jetpack/androidx/releases/annotation#1.9.1

Leading to errors like this :

```
Execution failed for task ':app:mergeExtDexDevDebug'.
> Could not resolve all files for configuration
':app:devDebugRuntimeClasspath'.
> Failed to transform annotation-jvm-1.9.1.jar
```
- Support console.group and console.groupEnd
- Log an message instead of throwing for console.count,
console.countReset, console.table, console.time and console.timeEnd
which are unsupported by cozy-minilog and/or react-native
Due to the way we manage errors, we sometimes try to JSON.parse string that were not JSON leading to errors like "[SyntaxError: JSON Parse error: Unexpected character: N]" displayed to the user.

Now we use the try/parse pattern to return the most appropriate message to the user.
To reduce the number of files where the 'mime' package is used and be future proof.
It will be used to display lottie animations.

We need lottie-react-native 6 because we are still in RN 72 on this branch.
It will be used when transitioning from apps to apps.
Twake UI is moving from "icon growing to fullscreen page" animation as code to "fullscreen page with icon doing things" animation as lottie file. There is a default animation with Twake logo for new apps and settings.

Because now it is a fullscreen page, there is no more need to managing the first half or the possible premature end of the transition if the webview loads fast.
Using Image Asset in Android Studio
In the new UI, we want some screens to have a gradient background

We want Container component to have a transparent background on those
screens so we can see the gradient behind them
Because we extracted the `style` variable from component's props and
because we did not use it, we would prevent overriding the child
component style from the parent component
We want to adapt the onboarding screens in order to use the new
Twake SSO login and subscription mechanisms

To allow this we introduce new "Cloudery" environments in order to
declare SSO urls

For now we want to keep the old Cozy onboarding screens for testing
purpose, so instead of replacing the environment strings we chose to
duplicate them

We also added a new overridable configuration to allow switching
between the new Twake and the old Cozy onboarding processes. The
default environment is the Twake onboarding

Note the `DeeplinksParserService` only refers to the old Cozy
environment strings, this is because those are used to handle the
login/onboard by email scenario that uses universal links. This
scenario does not exist anymore with Twake SSO processes, so there was
no need to adapt the condition
We want to adapt the onboarding screens in order to use the new
Twake SSO login and subscription mechanisms

To allow this we rework the Welcome screen so it uses the new Twake UI
and so its login and signup buttons triggers the SSO process

Contrary to previous implementation that used WebViews, the new SSO
process is fully based on the InAppBrowser

The side effect is that we now prefer to use Schemes instead of
UniversalLinks. This is because UniversalLinks would not trigger
correctly in some scenario like when creating a Twake instance. In that
scenario, a few seconds can occure between the last user click and the
final redirection. In some devices (all iOS but also some Android
devices), the UniversalLink redirection would be prevented by the
browser's rules as it wouldn't be considered as a user action. So the
Schemes are prefered here as they would always be triggered. The only
cons is that Schemes would requires user's approval on Android, so the
user would have to validate a popup just before the final redirection

The Welcome screen also contains a "Use your company server" that would
allow old Cozy's not configured with Twake SSO to be still accessible

However we still did not implement the other OIDC scenario (on premise
instance, or partners). This will be implemented in the following weeks
Since we changed the app's icon, we want the LockScreen to reflect that
change
In the new Twake UI we do not use Inverted theme anymore for lock and
credential screens
zatteo and others added 29 commits June 24, 2025 16:00
The brand mecanism is kept as is in case we need to use it again. Just the "mabulle" brand as been removed.
`cozy-client` has been upgraded to `58.3.0` to retrieve the new
`fetchRegistrationDetails()` method

Related PR: cozy/cozy-client#1610
When clicking on `Use your company server` button, we wan't to be able
to either:
- login to old Cozy instances (already implemented)
- login to OIDC instance (to be implemented)

This commit implement the detection of the login mechanism (classic vs
OIDC)

Then for OIDC instances, in implements the login mechanism. To make
this login work, we use the `client.authorize()` mechanism that already
implement in-app-browser based authorisation scenario that is able to
redirect to the OIDC portal if detected. This redirection is handled by
the cozy-stack
Google Play Billing >= 7.0.0 is required to push to the Play Store.
In the following commits we will rework the login screens to allow
login with the new Twake SSO environment

To allow login with the old system, we will implement a native form
that allows to enter the Cozy's URL. Before, this part was handled by
the cloudery, but the cloudery won't be displayed anymore

So we want to reimplement the Cozy's url sanitization methods so we can
call them locally with the user's Cozy url
To avoid

Ineligible destinations for the "CozyReactNative" scheme:
[11:26:42]: ▸ 		*** platform:iOS,
id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS
Device, error:iOS 18.2 is not installed. To use with Xcode, first
download and install the platform ***
I was unable to build with Xcode 16.4 for an unknown reason.

See actions/runner-images#12758 (comment)

Ineligible destinations for the "CozyReactNative" scheme:
    [11:26:42]: ▸           *** platform:iOS,
    id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS
    Device, error:iOS 18.2 is not installed. To use with Xcode, first
    download and install the platform ***
Since we now use the InAppBrowser for the onboarding, when the browser
is closed we now temporarily see the Welcome screen before being
redirected to the HomeScreen

This may give the impression that the onboarding process did not work
if there is some latency before redirecting to the HomeScreen

To prevent this we want to display the LoadingOverlay on top of the
Welcome screen during the SSO process
For now we want to disable LOCK enforcing on unsecure devices since
Twake users don't have any password. So until we find a better way to
handle this, lets disable this part
To be able to test on different env on new Twake accounts, we also
need to change login/signin url and not only the cloudery base url.
@zatteo zatteo closed this Oct 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants