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

[Story] Guide new Element *classic* users with MAS HS to use EX #2674

Open
1 of 2 tasks
mxandreas opened this issue Dec 20, 2024 · 0 comments
Open
1 of 2 tasks

[Story] Guide new Element *classic* users with MAS HS to use EX #2674

mxandreas opened this issue Dec 20, 2024 · 0 comments

Comments

@mxandreas
Copy link

mxandreas commented Dec 20, 2024

Description

Around February 2025 matrix.org is about to be migrated to MAS. This means that creating new accounts will no longer be possible with Element classic mobile apps, as it does not have support for that. Support is also not going to be added as the classic apps will be soon sunset.

At this moment, when trying to create an account with Element classic app on a HS that has MAS, a confusing error is shown.

The goal is to guide users whose homeserver has got MAS, to use EX and tell that the classic app will soon be sunset. There is no change or impact to users whose HS does not have MAS.

The designs are available here.

image

Technical details:

When the warning must be displayed

The warning "You can no longer create an account..." must be displayed when the login flow type is m.login.sso and the boolean org.matrix.msc3824.delegated_oidc_compatibility exist and is set to true. See more details here: https://github.com/matrix-org/matrix-spec-proposals/blob/hughns/sso-redirect-action/proposals/3824-oidc-aware-clients.md#homeserver-indicates-that-an-mloginsso-flow-is-for-compatibility

On Element Android, this boolean already exists so there were no change to do to get the info.

Feature flag

In order to let fork handle the migration smoothly, we will use a build config for this feature.

I have draft a config for Android:

sealed interface SunsetConfig {
    /**
     * Sunsetting the application is disabled.
     */
    data object Disabled : SunsetConfig

    /**
     * Sunsetting the application is enabled and can be configured by implementing this class.
     */
    data class Enabled(
            /**
             * The URL target to learn more.
             */
            val learnMoreLink: String,

            /**
             * The replacement application ID.
             * Example: for Element application, the replacement application ID is the id of Element X: "Element X".
             */
            val replacementApplicationName: String,

            /**
             * The replacement application ID.
             * Example: for Element App, the replacement application ID is the id of Element X: "io.element.android.x".
             */
            val replacementApplicationId: String,
    ) : SunsetConfig
}

and an implementation for Element Android:

    /**
     * Sunsetting the application.
     * Fork maintainers can use this to inform users about their new application if any. Note that you probably also want
     * to replace the resource `replacement_app_icon` too.
     */
    val sunsetConfig: SunsetConfig = SunsetConfig.Enabled(
            // TODO: update this URL.
            learnMoreLink = "https://element.io/",
            replacementApplicationName = "Element X",
            replacementApplicationId = "io.element.android.x",
    )

@mxandreas we will need the url for the learn more action before releasing the application.

Acceptance criteria

  • TBD

Size estimate

None

Dependencies

  • None

Out of scope

  • Nothing

Open questions

Questions

Preview Give feedback
No tasks being tracked yet.

Subtasks

Android

Preview Give feedback
  1. T-Task
    bmarty

iOS

Preview Give feedback
  1. T-Task
    pixlwave

Rust

Preview Give feedback
No tasks being tracked yet.

Other

Preview Give feedback
No tasks being tracked yet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant