Flutter Satellite.im Minimal Secure Chat Client

Overview

Uplink

Flutter Satellite.im Minimal Secure Chat Client


Getting Started ๐Ÿš€

To run this project either use the launch configuration in VSCode

image

or use the following command:

$ flutter run --flavor production --target lib/main_production.dart

*Uplink works on iOS, Android, Web, and Windows.


Running Tests ๐Ÿงช

To run all unit and widget tests use the following command:

$ flutter test --coverage --test-randomize-ordering-seed random

To view the generated coverage report you can use lcov.

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
$ open coverage/index.html

Working with Translations ๐ŸŒ

This project relies on [flutter_localizations][flutter_localizations_link] and follows the [official internationalization guide for Flutter][internationalization_link].

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. Then add a new key/value and description
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    },
    "helloWorld": "Hello World",
    "@helloWorld": {
        "description": "Hello World Text"
    }
}
  1. Use the new string
import 'package:uplink/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}

Adding Supported Locales

Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.

    ...

    <key>CFBundleLocalizationskey>
	<array>
		<string>enstring>
		<string>esstring>
	array>

    ...

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
โ”œโ”€โ”€ l10n
โ”‚   โ”œโ”€โ”€ arb
โ”‚   โ”‚   โ”œโ”€โ”€ app_en.arb
โ”‚   โ”‚   โ””โ”€โ”€ app_es.arb
  1. Add the translated strings to each .arb file:

app_en.arb

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}

app_es.arb

{
    "@@locale": "es",
    "counterAppBarTitle": "Contador",
    "@counterAppBarTitle": {
        "description": "Texto mostrado en la AppBar de la pรกgina del contador"
    }
}
Comments
  • feat(friends): Clear conversation after person is removed from friend list

    feat(friends): Clear conversation after person is removed from friend list

    What this PR does ๐Ÿ“–

    • title

    Which issue(s) this PR fixes ๐Ÿ”จ

    image on #395

    Special notes for reviewers ๐Ÿ—’๏ธ

    Lucas and I found a bug relating to this. Sometimes, only one person will have a clear chat while the other person will retain the chat history. I am still looking into this, and experimenting with MultiPassEventKind to see if we can mitigate this defect.

    Additional comments ๐ŸŽค

    opened by drepram 14
  • feat(messages): add message attachments

    feat(messages): add message attachments

    What this PR does ๐Ÿ“–

    • add message attachments upload/download
    • add message keys

    Which issue(s) this PR fixes ๐Ÿ”จ

    • Resolve #

    Special notes for reviewers ๐Ÿ—’๏ธ

    Additional comments ๐ŸŽค

    opened by pavlzk 8
  • Sort friends a to z

    Sort friends a to z

    What this PR does ๐Ÿ“–

    1. Sort friend list by first char from username

    https://user-images.githubusercontent.com/63157656/202223373-43a1c397-3a8b-4523-9697-4a81333faf43.mov

    2. Friend component receive already the username now, instead of search for it

    image

    3. Receive friend did list as before, but get all username, re order alphabetically and return it to render

    a. The struct now used on render is FriendListAlpha image

    b. All the time to update list alpha, we use a struct to save friend did and username, called UsernameAndDID image

    c. Main part of the function that order friends list image

    d. The friend list is rebuilt if occurs some change on each 300 miliseconds image

    e. To render friends list separated per char now, we use to maps on rsx image

    4. Alpha list to navigate

    image

    image

    a. Used ul with li and a elements b. Prevent default parameter avoid a common problem : "Some javascript code is sending an AJAX request (post or get) that is preventing the link from functioning as expected". c. Used rel parameter on anchor tags to avoid security problems image

    Which issue(s) this PR fixes ๐Ÿ”จ

    • Resolve #246
    • Resolve #280

    Special notes for reviewers ๐Ÿ—’๏ธ

    Additional comments ๐ŸŽค

    opened by lgmarchi 8
  • github - automatically delete branch after merge

    github - automatically delete branch after merge

    someone with admin access will need to do this https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches

    opened by josephmcg 7
  • UI fixes required for multiline support on inputs

    UI fixes required for multiline support on inputs

    There are slight Ui issues with the inputs that need fixing.

    • When you first start typing in the input it changes size slightly even when we don't need to.
    • Input padding is off and text is not properly aligned to the center.
    • resizable inputs should not have the resize handle.

    Image

    Image

    team: ui 
    opened by InfamousVague 7
  • 2 Chats from same user will be created if both users start a chat at the same time

    2 Chats from same user will be created if both users start a chat at the same time

    Issue: Matt and I noticed that if you add a friend and you and that friend both start a chat at the same time there will be a duplicate chats with that friend in the sidebar.

    *Sidenote - I noticed that if this happens and I try to enter the duplicated chat my system will crash

    How to replicate:

    1. Add a friend
    2. Once accepted both of you start a chat at the same time

    Screenshots: Image Image

    bug 
    opened by phillsatellite 7
  • update(Files): Drag and drop to upload a file

    update(Files): Drag and drop to upload a file

    What this PR does ๐Ÿ“–

    1. Upload any file, dropping it on dropzone

    a. Show file path on dropzone when it is over it b. Just upload a file if it is inside dropzone when we drop

    https://user-images.githubusercontent.com/63157656/205096906-97295aea-adc4-4ed0-967a-d6c3be08fa3f.mov

    1.1 Upload multiple files in a row

    https://user-images.githubusercontent.com/63157656/205107690-88cf0f51-1d9e-4957-a7c4-0927c7792d87.mov

    2. To be possible to upload a file, was necessary using with_file_drop_handler on app builder, to recognize file dragging on app

    a. True return on final, is to avoid macOS behavior to open file dropped when we drop a file in any place of the app image b. A global variable DROPPED_FILE was created to move file path to other app components, it was a struct to carry drag event and file path, and used rwLock to global variable for security reasons image

    3. Upload component

    a. When we use with_file_drop_handler on app builder, some element functions stop to work like ondrop, ondragexit, oninput (drag and drop), ondragend, so was necessary to use other strategy to be able to identify a drop b. Used a coroutine to identify if is able or not to drop a new file and upload it image c. drag_over_dropzone is used as ref, and change its value to allow drop and upload a new file, this variable is manipulated on some drag actions image d. If it is true, so we can read DROPPED_FILE variable and see if file was dropped or not to upload it image e. JS scripts were used to change UI, when a file is dragging over dropzone and show its path as well, and back to normal when is dragging out dropzone or was dropped image

    Which issue(s) this PR fixes ๐Ÿ”จ

    • Resolve #378

    Special notes for reviewers ๐Ÿ—’๏ธ

    - If it is possible, test it on macOS, Windows and Linux

    Additional comments ๐ŸŽค

    opened by lgmarchi 6
  • Hitting Enter will start a new line of text instead of send message

    Hitting Enter will start a new line of text instead of send message

    issue: This problem is not always able to be replicated, sometimes it seems like after having the app open for a while if you type up a message and hit enter it will start a new line of text instead of sending message. I noticed when this happens the rest of the app will be frozen User can't navigate to a different page.

    Screenshot:

    https://user-images.githubusercontent.com/93608357/204361239-7b7af3d5-1b12-436e-be1a-43f5d22a1ad6.mov

    bug question 
    opened by phillsatellite 6
  • feat(chat): call ui updated

    feat(chat): call ui updated

    What this PR does ๐Ÿ“–

    • Call ui updates

    Which issue(s) this PR fixes ๐Ÿ”จ

    • Resolve #

    Special notes for reviewers ๐Ÿ—’๏ธ

    Added the first username letter in the Media user box, lmk if it doesnt look good. We should put the Satellite icon later

    Additional comments ๐ŸŽค

    opened by molimauro 6
  • Feat/multiline support

    Feat/multiline support

    What this PR does ๐Ÿ“–

    • this PR shares code between components::compose::write and components::compose::msg. the latter did not resize on text input. now it does.
    • a TextArea and IconTextArea were created to do this. The chat reply modal uses IconTextArea, which composes TextArea with an emoji button.
    • the text within the TextArea is "lifted" out so that it can be updated on a button press.

    Which issue(s) this PR fixes ๐Ÿ”จ

    • #40
    • #101

    Special notes for reviewers ๐Ÿ—’๏ธ

    Additional comments ๐ŸŽค

    QA approved missing dev review 
    opened by sdwoodbury 6
  • High resource usage

    High resource usage

    Investigate ways we can bring down resource usage. Right now we're using quite a bit of resources and we want WarpGUI to run on any system so we'll need to bring this down. This issue involves looking through the render loop and seeing what could be causing these issues

    image enhancement help wanted 
    opened by InfamousVague 6
  • Scrollbar is appearing when User has no friends

    Scrollbar is appearing when User has no friends

    Issue: Having an issue when I make a new account and go to friends page, the scrollbar will already appear even though I have no friends to scroll through

    Screenshot: Screenshot 2022-12-21 at 8 00 15 PM

    bug UI Issues 
    opened by phillsatellite 0
  • User cancels file upload, file is still uploaded

    User cancels file upload, file is still uploaded

    issue: When user is uploading a file and they cancel it, the file will still upload

    screen recording:

    https://user-images.githubusercontent.com/93608357/208983137-8014eeeb-951b-41ae-b0c1-22fbe2b7daf4.mov

    bug UI Issues 
    opened by phillsatellite 0
  • No error message appears when 2 folders have the same name

    No error message appears when 2 folders have the same name

    Issue: When you try to create 2 folders with the same name you will not be able to create the second. When the User tries to create the second folder we should show an error message like "you already have a folder with this name"

    Screen recording:

    https://user-images.githubusercontent.com/93608357/208982932-aec1c847-b906-45cb-b279-670517d0e53d.mov

    bug UI Issues 
    opened by phillsatellite 0
  • test(appium): files UI tests and wdio config change

    test(appium): files UI tests and wdio config change

    What this PR does ๐Ÿ“–

    • Updates to webdriverio config files in order to avoid CI issues presented with appium sessions not created.
    • Adding file tests spec and screenobject files
    • Added helper function to obtain custom predicate strings

    Which issue(s) this PR fixes ๐Ÿ”จ

    • Resolve #630

    Special notes for reviewers ๐Ÿ—’๏ธ

    Additional comments ๐ŸŽค

    missing dev review 
    opened by luisecm 0
  • Changed Username will not update until app is closed and reopened

    Changed Username will not update until app is closed and reopened

    Issue: When you change your Username it will update everywhere except for the spot at the top of the App. To fix this the user has to close down the app and re open

    Screen recording:

    https://user-images.githubusercontent.com/93608357/208329679-4795a24d-be10-4ef7-9aa4-fae1eb700566.mov

    bug UI Issues 
    opened by phillsatellite 1
  • MacOS - Count indicator doesn't change according to amount of files dropping

    MacOS - Count indicator doesn't change according to amount of files dropping

    Issue: When you are drag and dropping multiple files into a folder, the count indicator on MacOS will show 0 no matter how many files you have

    Screen recording:

    https://user-images.githubusercontent.com/93608357/208196559-14dc77d2-9939-40ad-96f9-d5f819d209a4.mov

    UI Issues 
    opened by phillsatellite 0
Releases(0.0.1)
Owner
Satellite
P2P Chat, Voice & Video Open-source, stored on IPFS. End to end encryption, serverless... trackers not included.
Satellite
A powerful Flutter chat UI component library and business logic for Tencent Cloud Chat, creating seamless in-app chat modules for delightful user experiences.

<style> .button-9 { appearance: button; backface-visibility: hidden; background-color: #1d52d9; border-radius: 6px; border-width: 0; box-shadow: rgba(

Tencent Cloud 63 Aug 11, 2023
Flutter App to save notes secure, using cryptography, clean architecture and some design patterns.

notes A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

Gabriel Scotรก 6 Mar 28, 2022
Natrium - Fast, Robust & Secure NANO Wallet, now written with Flutter.

Natrium - Fast, Robust & Secure NANO Wallet What is Natrium? Natrium is a cross-platform mobile wallet for the NANO cryptocurrency. It is written in D

Appditto 702 Dec 30, 2022
Secure your application from prying eyes

previously nammed secure_window secure_application This plugin allow you to protect your application content from view on demand Pluggin in iOS is in

Arnaud Jezequel 78 Dec 2, 2022
A simple and secure money manager that keeps you financially vigilant.

Be Thrifty Today A simple and secure money manager that keeps you financially vigilant. Website https://bethrifty.today Short Description Be Thrifty T

Amruth Pillai 121 Dec 26, 2022
Item selling mobile app with secure payments with Payhere payment gateway. Auto APK generation with github actions CI/CD.

payhere_demo A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Shihara Dilshan 2 Jan 20, 2022
Amazing task management application with fluid, minimal and modern UI using Flutter! One of The Winner Apps for Google DevFest 2021!

Orb "Let your task orbit!" ?? Description Orb is an easy-to-use task manager app that help you manage your daily struggles to get your things done eff

Tom Huynh 9 Oct 28, 2022
Beautiful, minimal, and fast weather app. (Requires Android 6.0 or later)

Beautiful, minimal, and fast weather app. (Requires Android 6.0 or later)

Lacertรฉ 104 Dec 20, 2022
๐Ÿ‚ Minimal Dark and Monochrome Apk Extractor App available for Android 4.1+

โญ โญ โญ โญ โญ Kanade - Apk Extractor Dark and Minimal Pixel Art based Apk Extractor for Android 4.1+ Art ?? Kanade Chan by closedworldopenwound ?? ใƒใƒ ใฎไธŠใงๅฏใฆ

Laks Castro 80 Dec 30, 2022
This app is a minimal TodoList app that functions like a whiteboard. You can add new tasks, keep track of your tasks to make your day more productive, and then delete it after it is done.

My First Mobile App _ Minimal TodoList Flutter A new Flutter project. Getting Started This project is a starting point for a Flutter application. A fe

null 0 Nov 23, 2021
Minimal zenon.network JS SDK

znn.js znn.js is a community-backed javascript SDJ for the zenon.network project. The implementation is based on the official Dart SDK. Minimal requir

Alien Valley 10 May 19, 2022
The most complete Chat UI for flutter highly customizable and helps developing chat UI faster.

โš ๏ธ Dashchat v2 is available in v2 branch โš ๏ธ You can open issues for the v2 to indicate things we need to implement/fix. Also the API can change until

Fayeed Pawaskar 432 Dec 11, 2022
Chat-application - Build Chat Application using Flutter and Firebase

Build Chat Application using Flutter & Firebase Source Code - Enjoy ! Social Med

Muhammad Irvan 0 Jan 3, 2022
Chat-App - A Chat App with flutter and Firebase and Video Calling using WebRTC

chat_app A chat app with flutter and firebase with image message support and vid

Reza Hosseinypour 10 Nov 23, 2022
Amir Khan 47 Jan 8, 2023
A full-fledged one-to-one chat app developed entirely in Flutter

Enigma Enigma - A minimalist, locked-down one-to-one chat app. Usage Flutter - Get Started Since this is a Firebase dependent project, create a Fireba

Amit Joki 389 Dec 23, 2022
chat app with flutter

Chat App Reader Ui Made with Flutter ?? you can also buy me coffee ?? Requirements ?? Any Operating System (MacOS, Linux, Windows) Any IDE with Flutte

Dami 22 Apr 23, 2022
Flutter chat app

labalaba A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

null 77 Dec 16, 2022
:rocket: This application using flutter for develop a realtime chat app

Flutter Chat Socket Description: ?? This application using Flutter for develop a realtime chat app How I can run it? ?? Clone this repository ?? Run b

Dao Hong Vinh 17 Dec 31, 2022