Git Product home page Git Product logo

theonewiththebraid / messenger-client-archive Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tim-ref/messenger-client

0.0 0.0 0.0 10.5 MB

Just for archiving purposes, you know ... Proudly "originally" developed by Akquinet GmbH, I'm not the author.

License: GNU Affero General Public License v3.0

Shell 1.66% JavaScript 0.12% Ruby 0.31% Objective-C 0.01% PowerShell 0.05% Kotlin 0.12% Dart 96.13% CSS 0.09% Swift 0.99% HTML 0.44% Batchfile 0.01% Dockerfile 0.08%

messenger-client-archive's Introduction

TIM Referenzimplementierung - Messenger Client

This project contains the TIM reference implementation of a Messenger Client instance. It is based on the following technologies:

  • Flutter
  • Dart

Quickstart: Webclient with Docker

  • make sure docker is installed and docker deamon is running
  • build image and start container
    • docker build . -t "timref_web" && docker run -p 8989:80 timref_web
    • alternatively you can use docker-compose docker-compose up

this will build the web client and start a server on

http://localhost:8989/

Requirements

IMPORTANT: Choose flutter sdk version 3.10.X - newer versions are not supported!

Usage

To run the web client the following are required (see Requirements for helpful links).

  • Flutter 3.10.4
  • Browser: Current version of Google Chrome is the recommended browser. Firefox, Safari and Microsoft Edge are supported by flutter as well but are not as thoroughly tested as Google Chrome.

After running:

$ ./run.sh web

the web client can be accessed under http://0.0.0.0:8989.

Development

Installation

  1. run flutter doctor afterwards and also after each of the following steps, it will tell you what is missing
    $ flutter doctor
  2. install Android Studio
    • if flutter doctor could not locate the JRE within the Android installation: https://stackoverflow.com/a/75134478
      • Install the flutter plugin. This will also install the dart plugin.
  3. if you have IntelliJ installed
    • you can use IntelliJ to import this project. When opening the project IntelliJ will install additional plugins ( restart required)
    • it will install the flutter plugin plus the dart plugin. you will need to configure the path to the dart sdk (this was installed in a previous step)
    • you may also need to configure the path to the android sdk in the android plugin
  4. install Android toolchain
    • check that sdkmanager is available: ~/Library/Android/sdk/tools/bin/sdkmanager --version
    • install tools: ~/Library/Android/sdk/tools/bin/sdkmanager --install "cmdline-tools;latest"
    • apparently this installer requires java. I had to ensure to use the correct java version as i would otherwise get this exception: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema i have used java 8 for the install tools step: e.g. sdk use java 8.0.362-zulu.
    • to accept the licenses i needed to use java 11:
      • e.g. sdk use java 11.0.18-zulu
      • flutter doctor --android-licenses

Build (Android)

  • insert your own google-services.json-file into android/app/ for the push notifications to work
  • build the debug apk (for usage by the messenger-testtreiber-api): flutter build apk --debug
    • the .apk will be available in build/app/outputs/flutter-apk/app-debug.apk

Build parameters

  • How to build for TestDriver application

    Add --dart-define=ENABLE_TEST_DRIVER=true --dart-define=ENABLE_DEBUG_WIDGET=true to your build command.

  • How to add visible DebugWidget

    Add --dart-define=ENABLE_DEBUG_WIDGET=true --dart-define=DEBUG_WIDGET_VISIBLE=true to your build command.

Unit Testing

To run all test cases in this repository use

$ flutter test

Code style & quality

Please use dart format to properly format your code and flutter analyze scan for issues. You should do this before every commit:

dart format lib/tim test/tim
flutter analyze lib/tim test/tim

Dependencies

Immediate dependencies are listed in pubspec.yaml and pubspec.lock. You can use the command flutter pub deps to print all dependencies. Use flutter pub deps --no-dev instead to print runtime dependencies only, excluding development tooling.

License Reports

A license report can be created by activating and using the dart license checker. Go to the directory that contains the wanted pubspec.yaml (e.g. the project directory in this case) and run:

$ dart pub global activate dart_license_checker
$ dart_license_checker

This gives you all immediate dependencies, but there is a flag to get all transitive dependencies instead:

$ dart_license_checker --show-transitive-dependencies

Some licenses are returned as unknown, because they are not correctly displayed by https://pub.dev/. Therefore we added a list of licenses and of all transitive dependencies as text files.

To add Translations

Refer to this guide.

HBA Authentication

Further information about the usage of the HBA authentication is listed here.

Privacy

Further information about privacy is listed here.

Architecture Overview

Ways of communication

  1. Connection to the homeserver (Synapse) via Messenger Proxy
  2. Connection to Keycloak for authentication
  3. Connection to the VZD in order to change visibility
  4. Connection to Push Gateway for receiving Push Notifications

Architecture

messenger-client-archive's People

Contributors

tnfink 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.