Coder Social home page Coder Social logo

hanthor / schildichat-android-next Goto Github PK

View Code? Open in Web Editor NEW

This project forked from schildichat/schildichat-android-next

0.0 0.0 0.0 66.88 MB

Matrix client / Element X fork

Home Page: https://schildi.chat/android/next/

License: Apache License 2.0

Shell 0.69% JavaScript 0.22% Ruby 0.01% Python 0.46% Java 0.11% Kotlin 98.37% CSS 0.03% HTML 0.11% Gherkin 0.01%

schildichat-android-next's Introduction

Translation status SchildiChat-Android Matrix room #android:schildi.chat

schildichat-android-next

Matrix client based on Element Android X in the tradition of the original SchildiChat for Android which was based on the now deprecated Element Android codebase.

Similarly to Element X, this SchildiChat Android rewrite should still be considered beta, as it lacks some functionality which one might expect from a fully-featured chat app, compared to the old SchildiChat implementation.

An overview over changes compared to Element X can be found here.

Translations

If you want to translate SchildiChat, visit our weblate.
Translations that concern upstream Element code are best contributed directly to Element, who currently manage translations on localazy.

Screenshots

Building

In general, building works the same as for Element X or any common Android project. Just import into Android Studio and make sure you have all the required SDKs ready.

Currently, SchildiChat uses a forked matrix-rust-sdk and wysiwyg published on GitHub packages, which unfortunately still does not provide unauthenticated access. Accordingly, before building, create a GitHub token with the read:packages permission, and configure it in your local.properties:

gpr.user=...
gpr.token=...

Alternatively, you may export the GPR_USER and GPR_TOKEN environment variables before building.

If you do not have a GitHub account, you can also download the appropriate .aar file from the SDK's releases and put it into ./libraries/rustsdk/matrix-rust-sdk.aar.

WYSIWYG development

To develop changes in our matrix-rich-text-editor fork:

Build WYSIWYG locally

  • Clone the repo
  • Bump the version number to some future version that doesn't exist yet using ./update_version 1.2.3 where 1.2.3 is your chosen version number. By not re-using any existing version number you can make sure you're using your local build if the build of SchildiChat succeeds.
  • Publish the wysiwyg by running make android in its directory. (Make sure you have JAVA_HOME, ANDROID_NDK_HOME and all the build dependencies setup)

Include local-built WYSIWYG in SchildiChat

  • Modify settings.gradle.kts to insert mavenLocal() into the dependencyResolutionManagement {} block. (Cherry-pick)
  • Change the version number of wysiwyg in gradle/libs.versions.toml to match the one you published locally.

Contributing

Generally, contributions are welcome!
Note that in order to ease upstream merges, we want to leave the smallest footprint possible on Element's sources when implementing original features or patching Element's behaviour.

In particular (may change a bit while the project is still in alpha):

  • Put code into additional files (chat.schildi.* package names) if reasonable
    • Prefer schildi/lib module if it doesn't depend on element modules (except maybe strings)
    • Prefer schildi/components module if it depend on some of Element's Design/UI components but nothing else
    • Otherwise, prefer element module where it makes most sense (or create a new module for bigger features, maybe)
  • Put Schildi-specific drawables and other xml resources that override upstream resources into the sc build flavor
    • This way, we can use the same name and avoid merge conflicts
    • Compare e.g. libraries/designsystem: we define the flavor sc and thus put drawables in the sc instead of main directory. For new modules that do not feature a sc flavor yet, copy over the required build.gradle.kts content from a module that does.
  • Put Schildi-specific strings into schildi/lib
    • Never touch upstream strings! If we want to change Element's strings, we'll either want a script that patches them, so we can restore upstream strings before upstream merges and re-do our changes automatically after the merge, or alternative put it into an sc build flavor, if we do not need to touch multiple translations.
  • Don't worry too much about code style if violating it can ease upstream merges
    • When putting upstream code into a new block (e.g., putting it in an if-statement), don't indent the upstream code, but rather add comments like // Wrong indention for merge-ability - start and // Wrong indention for merge-ability - end

schildichat-android-next's People

Contributors

bmarty avatar renovate[bot] avatar ganfra avatar jmartinesp avatar spiritcroc avatar elementbot avatar csmith avatar langleyd avatar jonnyandrew avatar mnaturel avatar yostyle avatar surakin avatar billcarsonfr avatar florian14 avatar waclaw66 avatar kittykat avatar dependabot[bot] avatar johennes avatar michaelkaye avatar manuroe avatar pixlwave avatar frebib avatar freezlex avatar kegsay avatar github-actions[bot] avatar kefiiris avatar hanthor avatar eandersons avatar poljar avatar bnjbvr avatar

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.