Git Product home page Git Product logo

element-android's Introduction

Latest build Weblate Element Android Matrix room #element-android:matrix.org Quality Gate Status Vulnerabilities Bugs

Element Android

Element Android is an Android Matrix Client provided by Element. The app can be run on every Android devices with Android OS Lollipop and more (API 21).

It is a total rewrite of Riot-Android with a new user experience.

Get it on Google Play Get it on F-Droid

Build of develop branch: GitHub Action Nightly test status: allScreensTest

New Android SDK

Element is based on a new Android SDK fully written in Kotlin (like Element). In order to make the early development as fast as possible, Element and the new SDK currently share the same git repository.

At each Element release, the SDK module is copied to a dedicated repository: https://github.com/matrix-org/matrix-android-sdk2. That way, third party apps can add a regular gradle dependency to use it. So more details on how to do that here: https://github.com/matrix-org/matrix-android-sdk2.

Roadmap

The version 1.0.0 of Element still misses some features which was previously included in Riot-Android. The team will work to add them on a regular basis.

Releases to app stores

There is some delay between when a release is created and when it appears in the app stores (Google Play Store and F-Droid). Here are some of the reasons:

  • Not all versioned releases that appear on GitHub are considered stable. Each release is first considered beta: this continues for at least two days. If the release is stable (no serious issues or crashes are reported), then it is released as a production release in Google Play Store, and a request is sent to F-Droid too.
  • Each release on the Google Play Store undergoes review by Google before it comes out. This can take an unpredictable amount of time. In some cases it has taken several weeks.
  • In order for F-Droid to guarantee that the app you receive exactly matches the public source code, they build releases themselves. When a release is considered stable, Element staff inform the F-Droid maintainers and it is added to the build queue. Depending on the load on F-Droid's infrastructure, it can take some time for releases to be built. This always takes at least 24 hours, and can take several days.

If you would like to receive releases more quickly (bearing in mind that they may not be stable) you have a number of options:

  1. Sign up to receive beta releases via the Google Play Store.
  2. Install a release APK directly - download the relevant .apk file and allow installing from untrusted sources in your device settings. Note: these releases are the Google Play version, which depend on some Google services. If you prefer to avoid that, try the latest dev builds, and choose the F-Droid version.
  3. If you're really brave, install the very latest dev build - pick a build, then click on Summary to download the APKs from there: vector-Fdroid-debug and vector-Gplay-debug contains the APK for the desired store. Each file contains 5 APKs. 4 APKs for every supported specific architecture of device. In doubt you can install the universal APK.

Contributing

Please refer to CONTRIBUTING.md if you want to contribute on Matrix Android projects!

Come chat with the community in the dedicated Matrix room.

Also this documentation can hopefully help developers to start working on the project.

Triaging issues

Issues are triaged by community members and the Android App Team, following the triage process.

We use issue labels to sort all incoming issues.

element-android's People

Contributors

ariskotsomitopoulos avatar atalonica avatar billcarsonfr avatar bmarty avatar danialbehzadi avatar dependabot[bot] avatar dodog avatar dominaezzz avatar ericdecanini avatar florian14 avatar ganfra avatar glandos avatar hughns avatar ihorhordiichuk avatar jmartinesp avatar langleyd avatar libexus avatar linagkar avatar linerly avatar michaelkaye avatar mnaturel avatar onurays avatar ouchadam avatar poljar avatar s8321414 avatar szimszon avatar ujdhesa avatar waclaw66 avatar weblate avatar yostyle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

element-android's Issues

Registration

Add support for account registration

  • Get Login Flows
  • Captcha step
  • Terms step (view terms in browser)
  • 3pid step
  • SSO (if the custom hs uses SSO, display immediately in webview)
  • Login fallback
  • Account creation fallback

Notes

  • For now, for implementation ease transition screens in from the right, with the logo being a part of the scrollable view

Send media, file, take photo, take video

Using a media preview screen before sending media to the room

  • Handle sending media - SDK side (audio,image, video, file)
  • File picker
  • Take picture with camera
  • Take video with camera
  • Ask user for quality level before sending images

KeysBackup

Related to #17
Current status: code has been imported from RiotX during #17.

what's remaining is to:

  • integrate the banner on the Home. Home is now on develop, crypto branch has to be rebased on develop before doing this
  • test Setup
  • test Recover
  • test Settings

Room screen: media in timeline

The app should be able to display in the timeline:

  • images
  • animated images (automatic play based on user settings)
  • videos

Permalinks navigation

The PoC should validate a better navigation across permalinks than the current riot-android. That one resets the navigation stack every time you tap on a permalink.

The PoC should manage:

  • 1. permalink to a joined room. The user should be able to navigate from room to room and going back without losing the context
  • 2. permalink to an event in the same room. The app must reuse the same screen.
    • a. to move from live to a permalink
    • b. from a permalink to live
  • 3. use the DB
    • a. Manage permalink to event already in the DB
    • b. vs not yet. That requires to use /context and manage storage of received chunks, including merging continuous chunks
  • 4. Permalink to a room not yet joined.

Text Composer: slash commands

The editor must manage slash command:

  • manage completion
  • display help
  • convert the command into action

(legacy) commands to handle

  • "/me"
  • "/ban"
  • "/unban"
  • "/op"
  • "/deop"
  • "/invite"
  • "/join"
  • "/part"
  • "/topic"
  • "/kick"
  • "/nick"
  • "/markdown"
  • "/clear_scalar_token"
  • "/myroomnick"
  • "/myroomavatar"
  • "/plain"
  • "/rainbow"
  • "/rainbowme"
  • "/shrug"
  • "/lenny"
  • "/tableflip" (#2814) (#7231)
  • "/ignore"
  • "/unignore"
  • "/rageshake" (See #4881)
  • "/converttodm"
  • "/converttoroom"

Please provide a daily APK

I'd love to help work out bugs for this, but I am not in the position to build the APK myself regularly. Would it be possible to have Jenkins build one, or some other means to have a regularly updated APK available for testing?

multiple accounts

Any plans to support multiple accounts?

Edit by Benoit

The SDK already support multi-account.

Blocked by: matrix-org/sygnal#70

Open points:

  • UI/UX
  • What happen in case of soft logout
  • Notifications
  • Logout
  • Login when already connected to another one
  • Create a new account when already connected to another one
  • To be completed

Room screen: PoC to render html messages into webviews

This may be a way to implement #8.

In the legacy Riot-Android app, we convert html contents into Android strings but we often have reports of users complaining that some html renders badly.

The goal of this PoC is to try to render every such message into a webview and then, check app performance of the room screen when the ListView contains plenty of webviews.
Of course, this must be checked on a low-end device.

Room details screen

  • Room title
  • Room picture
  • Room topic
  • List of members
  • List of files (excluded from showstopper)
  • E2E state

Add Rageshake feature

  • VectorUncaughtExceptionHandler
  • Take screenshot
  • Configure Timber to capture and send logs

Maybe use same repo than for Riot, but with new label for RiotX

Settings

Settings screen

  • User profile
  • Local contacts
  • User interface
  • Home display
  • Flair
  • Notifications
  • Calls
  • Ignored users
  • Labs
  • Crypto
  • Crypto keys management
  • Device
  • Advanced
  • Analytics
  • Other
  • Deactivate account

Text Composer: ids completions

The editor must help the end user to complete:

  • user names
  • user ids
  • room ids
  • room aliases
  • group

Pills:

  • Generate pills: It should be able to generate pills for completed ids

Event formatter

Format matrix events into readable, internationalised messages in the timeline:

  • state events:
    • membership events
    • room name change
    • room avatar change
    • ...
  • bing
  • UTDs (Unable To Decrypt) errors
  • This must work for last messages displayed in rooms lists.

Send sticker

Rendering stickers is already supported by RiotX (#685)

Sending stickers is depending on #48 , so will be implemented after #48, as a cherry on the cake.

light UX version of RiotX dedicated to androidTV?

Hello,

If possible, it would be nice to have a light UX version of RiotX dedicated to androidTV.

It is possible today to install and use Riot for android with a mouse and keyboard on androidTV (thanks to AptoideTV). I know receiving voice and video work. I couldn't try if others can hear/see me because I don't have webcam for my TV but I read that Android has some webcam's drivers pre-installed. I'll try when I can. Did someone try?

However, I think it's not handy to do so. What I have in mind is a simpler version of it. It is mostly a question of hiding options of the android app.

It would only allow to make and answer calls in direct chat. Salon would not be listed (hidden, not accessible inside RiotX-androidTV), only direct chat would appear! And when we enter one of them, only the two buttons of voice and video call would be there (no chat room, no keyboard needed).

Only notification of calls would be needed and would appear on top of screen while TV is on (used) with two options answer/not answer.

If it's possible, it could even ring and switch on the screen of TV when a call is incoming but would need to switch off again the screen if the call is not picked (to avoid consuming electricity).

What do you think?

Add root files

  • LICENSE
  • README.md
  • CONTRIBUTING.md
  • AUTHORS.md
  • .github/PULL_REQUEST_TEMPLATE.md

Power save mode with ignoring events in muted rooms

Current Riot-Android in background mode receive all events, even in muted rooms. This is not good for traffic & battery.

For example, I joined to Matrix HQ, Riot and some others active rooms, because very rarely read them (1-2 times in week). But my mobile device wakes up and receive every message from those rooms, eating my battery and traffic.

Will be good to implement power save mode, that receive only events for active rooms and ignore muted rooms, sync them only on demand (when they opened manually).

Send and play voice messages

Add the abillity to record and send voice messages inside the App and also play them.
(without the need of 3rd party apps)

EDIT by @bmarty:
Additional requirements:

  • Users hold a button to record a voice message and release to review then send (or delete).
  • The voice message is recorded as an audio file and uploaded to the media repository.
  • A special event is written to the timeline and renders on clients as a playable voice message.
  • Recording and playing audio files must be integrated into the app that no external other app is required for both functions.

Implement e2ee - crypto

Here is the recipe so far:

  • Import legacy code from Riot to RiotX
  • Make the code compil once
  • Migrate the network code to the new archi (Tasks, etc.)
  • Migrate the realm code to the new archi
  • Create services to expose crypto API (CryptoService, KeysBackupService, SasVerificationService)
  • Import UI for SasVerification
    • incoming request are displayed
      • can be cancelled
      • can be accepted
  • Import UI for KeysBackup
  • Plug in the crypto settings in main settings screen (display info, import/export keys, etc)
    • Display device name + rename device
    • Display device id + copy to clipboard
    • Display device fingerprint + copy to clipboard
    • Enable/Disable crypto to verified device only
    • Display list of devices, and display device detail when clicking on a detail
      • Delete a device
      • Rename a device
    • Export room keys (old method)
    • Import room keys (old method)
    • Open keys backup management
  • Plug in the crypto setting in room setting screen (the screen is not yet available) (See #178)
  • Manage crypto data from the sync
    • Handle encrypted to_device event
  • Send encrypted event
  • Decrypt encrypted event
  • Display message type m.room.encryption in the timeline

Also:

Text Composer: fun features

The editor must also manage:

  • Markdown to matrix message event with org.matrix.custom.html
  • Quote
  • Reply
  • Save typed but not sent message

Integration manager (Matrix app manager) and Widgets

Some related MSC : matrix-org/matrix-spec-proposals#1956

Cases to handle

  • Be able to disable integration manager in settings
  • Be able to show configured integration manager in settings
  • Be able to edit integration manager url => need UI
  • Be able to add/delete widgets
  • Be able to display Widget in a dedicated WebView
  • Be able to show room widgets in RoomDetail => need UI/UX
  • Display Widget authorization popup
  • Be able to send a sticker
  • Be able to accept TOS

Android Legacy

Push management

  • Create GPlay (legacy: App) and FDroid flavors
  • Configure FCM

Improve Build process

  • Create appfdroid and appgplay build variant
  • Configure travisCI to build PRs
  • Integrate code quality check form Riot (check_code_quality.sh)
  • Add lint config from Riot
  • Configure sonar

Notifications

  • Show notification in RiotX
  • Use legacy quick reply for OS < 7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.