Git Product home page Git Product logo

ox-coi's Introduction

Project on hold for now

Please note that the OX COI Messenger project is currently not active. In the past this project was hindered by the lack of Rust expertise on side of the project maintainers. Work is underway to create a new approach which also allows users to manage normal email messages. If and when we have something to announce, we will update this section. For now, we keep this reference for interested developers.

OX COI Messenger

OX COI Messenger is a mail based chat app. This app provides the user interface for an IMAP / SMTP based chat on Android and iOS.

Information

Requirements

  • Flutter 1.17.2 is used
  • Android setup
  • iOS setup
  • The Flutter Delta Chat Core Plugin needs to be checked out right beside the OX COI Messenger app (the repositories should be located in the same folder)
    • Please follow the requirements given by the plugin project before building the app project

Execution

  • Fullfil all requirements
  • Connect a smartphone to your PC or start an emulator / a simulator
  • Enable Dart and Flutter support within your IDE
  • Build and run the project via your IDE / Flutter CLI

Development

To be able to edit / extend this project the following steps are important:

Flutter

For help getting started with Flutter, view our online documentation.

Dart

Flutter is based on Dart, more information regarding Dart can be found on the official website.

ox-coi's People

Contributors

boehrsi avatar cihanoezkan avatar domomarco avatar dougnkong avatar florianhaar avatar phranck avatar robert-virkus 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

ox-coi's Issues

Show only chat invites

Is your feature request related to a problem? Please describe.
We're showing all invites and we should only show invites created by another chat app (e.g. OX-Talk or DeltaChat)

Describe the solution you'd like
DCC already provides some logic to filter that, we should implement something similar. See https://github.com/deltachat/deltachat-android for an example.

Additional context
This ticket should also add the indicator for new invites.

Internal bug tracker

Invites are not removed if a new chat is created

Describe the bug
If an invite for a contact exists, but the user creates a new chat for this contact manually, the invite is not removed. It's also not possible to remove the invite (block it or accept it) later via the invite view.

Expected behavior
If a chat is created all corresponding invites should be removed.

Internal Bug Tracker

Key Handling - QR code verification

Is your feature request related to a problem? Please describe.
The user should be able to verify users via QR code.

Describe the solution you'd like
The DCC already provides QR code generation and we should adapt it. Creating a chat or adding a user via QR code to a group should be possible in a secure way. The user should also have a simple way to display it's own QR code to other users. We should add a menu entry on the chat list page or / and on the create chat screen.

Internal Bug Tracker

Push messages?

I do not find any information on how the problem with push messages will be handled in android (and iOS).
Since android 8 you can only implement push messages with the usage of FCM (firebase cloud messaging) without draining the battery as far as I know.
Or did I just miss something?

Adjust time indicator in chat view

Messages currently only have a time value displayed to the user in the chat view. We need to adjust that to also display the date, if the message wasn't sent at the same day. If possible we should add a scrollable date marker.

Internal bug tracker

Show last message preview in the chat list

Is your feature request related to a problem? Please describe.
The user should be able to see a preview of the last sent or received message directly in the chat list.

Describe the solution you'd like
Chat list item: The text below the chat name should be a snippet created from the last received or sent message. Images / Videos / Voice messages / other attachment message should be shown as the corresponding icons.

Internal Bug Tracker

Add voice and video messages

Is your feature request related to a problem? Please describe.
Sending voice or video message is not possible from within the app.

Describe the solution you'd like
Enable the currently disabled audio / video buttons in the chat view and allow the user to record voice messages or videos. The user should be able to directly send those files as messages.

Internal Bug Tracker

Chat list flickers

It seems like the chat list is completely reloaded if a new message (invite) or a new chat appears. This leads to flickering within the view. We need to alter that behavior.

Internal bug tracker

Provide notifications for incoming message while in foreground

Is your feature request related to a problem? Please describe.
The user should be informed as soon as a new message arrives. A notification should be created if:

  • The user has the app in the foreground
  • Is not in the chat the message belongs to

Describe the solution you'd like
We should add a global listeners for messages, which creates those notifications. The listener should always be informed if the app is visible and which view is open. Doing this the listener would be able to decide if a notification should be shown.

Additional context
If is important to assure notifications aren't displayed multiple times. We have to add a Flutter plugin to access notifications.
This ticket only handles the actual loading / refreshing part. The UI is done in #87.

Internal Bug Tracker

Set audio recording type to mono

Is your feature request related to a problem? Please describe.
Mono should be enough to work with. It should probably also increase the overall quality by keeping the same file size.

Add logging

Is your feature request related to a problem? Please describe.
We need more logging.

Describe the solution you'd like
A logger should be introduced. Beside logging to the console it should also be able to create log files. https://github.com/dart-lang/logging could be helpful. We should define constant tags.

  • Log navigation events
  • Log state events
  • Log core events

Internal bug tracker

Add search / filtering for the create group chat view

Is your feature request related to a problem? Please describe.
The user should be able to filter / search for contacts in the create group chat view.

Describe the solution you'd like

Internal Bug Tracker

Extend contact information

Is your feature request related to a problem? Please describe.
The user should be able to persist more contact information. Currently only the name and mail are saved.

Describe the solution you'd like
At least the phone number should also be supported. Avatar images from the local phone book would be an additional nice to have.

Internal Bug Tracker

Edit account settings are not applied

Describe the bug
After changing the account settings, no reconfiguration is performed.

To Reproduce
Occurrence: [always]
Steps to reproduce the behavior:

  1. Edit account settings
  2. Change the account settings and save

Expected behavior
The new settings are used.

Message Actions - Copy

Is your feature request related to a problem? Please describe.
The user should be able to copy a message from the chat view.

Describe the solution you'd like
Long pressing on a message should add the given text to the clipboard. This action is only available for text.

Additional context

  • Multi select will be added later.

Internal Bug Tracker

Add block view

Is your feature request related to a problem? Please describe.
A blocked user can't be unblocked right now.

Describe the solution you'd like

  • If the contacts tab is opened the app bar should contain a block icon (e.g. a stop sign).
  • Tapping the sign opens the block view
  • The user gets a list of all blocked contacts (reuse the already given contact UI)
  • Tapping on a contact opens a dialog which allows to unblock or to cancel the action
  • If a user is unblocked the given DCC functions should get triggered

Internal Bug Tracker

Invite messages are not removed

If a user receives multiple messages from one user and accepts / blocks the chat request for one message, not all messages are removed. They stay as invites in the chat list. Accepting / blocking a user with those messages does not change the chat view at all.

Internal bug tracker

Key Handling - Export / import keys

Is your feature request related to a problem? Please describe.
The user needs to be able to export / import there secret keys.

Describe the solution you'd like
The settings should provide an entry to export / import the automatically setup keys. This entry should be secured be e.g. a pin or the already set lock pattern.

Internal Bug Tracker

Display message state

Is your feature request related to a problem? Please describe.
The user should be able to see the state of a message (sent, read, delivered).

Describe the solution you'd like
As soon as a final decision in regards to the technical solution is provided we should implement this ticket. For now we could use the read-receipts DCC provides, but there could also be a COI alternative.

Internal Bug Tracker

Contacts from invites are shown in the contact list

Describe the bug
If a new invite appears the corresponding contact is shown in the normal contact list.

To Reproduce
Occurrence: [always]
Steps to reproduce the behavior:

  1. New invite appears

Expected behavior
Contacts not added by the user are not shown in the normal contact list.

Additional context
This happens due to our repository handling. We have to split contacts added by invites and contacts added by the user. Therefore we will use two separate repositories.

Internal Bug Tracker

Add search / filtering for the create chat view

Is your feature request related to a problem? Please describe.
The user should be able to filter / search for contacts in the create chat view.

Describe the solution you'd like

Internal Bug Tracker

Move invite view to the chat list

Is your feature request related to a problem? Please describe.
The user should be able to see invites in the chat list. The extra invite view should get removed.

Describe the solution you'd like
The already given logic should be used and the multi-view-invite (separate chat list and invite list) handling should get changed to a single-view-invite (combined chat list and invite list) handling. The given designs should get used. We have to assure that no unwanted list reloading is performed. Only one list entry should be shown for a contact, even if multiple messages were received.

Internal Bug Tracker

Delete chats

Is your feature request related to a problem? Please describe.
The user should be able to delete chats.

Describe the solution you'd like
In the chat view an entry in the overflow menu should be added to allow the delete action. The DCC supports the delete action.

Additional context
Multi select in the chat list will be added later.

Internal Bug Tracker

Profile settings aren`t updated immediately

Describe the bug
If the avatar, name or status message is changed, the changes aren't always applied to the profile view.

To Reproduce
Occurrence: [often]
Steps to reproduce the behavior:

  1. Go to Profile
  2. Click on Edit profile
  3. Change values and apply them

Expected behavior
All changes are applied to the profile view.

Additional context
This happens due to the multiple responsibilities of the user_bloc. We need to split the displaying / loading logic and the change logic to fix this problem. A new user_change_bloc should get introduced.

Internal Bug Tracker

Create chat profile view

Is your feature request related to a problem? Please describe.
The user isn't able to see the contact information of other chat participant(s).

Describe the solution you'd like

  • In a chat the user should be able to tap on the app bar (avatar or name) and the profile view should open
  • The profile view should contain all given information (avatar, name and mail for individuals, only the avatar and name for groups)
  • The UI should contain the given information (we should reuse the layout of the profile view) and a divider line below it. Below the line possible actions should get listed (we can use a PreferenceScreen like UI):
    • Block the user (opens a dialog and asks to confirm the blocking, if the user confirms the blocking close the view and the chat and trigger the relevant DCC functions)

Additional context
More actions will be added later, an optional feature could be a copy to clipboard function when tapping the users mail. We can also think about listing all group contacts. If this is easily doable please add it in this first version of the profile screen, otherwise we will add it later.

Internal Bug Tracker

Message Actions - Edit and delete

Is your feature request related to a problem? Please describe.
The user should be able to edit or delete a message from the chat view.

Describe the solution you'd like
Tapping on a message should open a context menu which allows the action.The actual action must be performed by the DCC.

Additional context

  • Future / COI feature (Needs DCC adjustments, needs clarification)
  • Multi select will be added later.

Internal Bug Tracker

Message Actions - Forward

Is your feature request related to a problem? Please describe.
The user should be able to forward a message from the chat view.

Describe the solution you'd like
Tapping on a message should open a context menu which allows the action.The actual forwarding is performed by the DCC. A method for that already exists in the DCC.

Additional context

  • Multi select will be added later.

Internal Bug Tracker

Add search for the chat list

Is your feature request related to a problem? Please describe.
The user should be able to search for messages from the chat view.

Describe the solution you'd like

Internal Bug Tracker

Add new message counter for chats

Is your feature request related to a problem? Please describe.
The user should be able to see if new messages exist, directly in the chat list.

Describe the solution you'd like
A small indicator in every chat list item should show the number of new messages (1-99 or 99+). If no new message exists, no indicator should be visible. The DCC should already be able to deliver the required data.

Internal Bug Tracker

Chat list item UI problems

Describe the bug

  • The message preview is cut by the date / time indicator
  • The divider is cut by the date / time indicator and by the message counter

To Reproduce
Occurrence: [always ]
Steps to reproduce the behavior:

  1. Open the chat list
  2. Receive a new message in an existing chat

Expected behavior
Nothing is cut and all possible space is used.

Additional context
Currently the main layout displays elements horizontally beside each other. The name and preview on the left, the date and the message counter on the right. We should move the date and the message counter inside the structure, so they are displayed right beside the actual name / preview views and not on the root level. This should avoid the UI problems and lead to more flexibility.

Chat list flickers

Describe the bug
The chat list flickers if many messages are received at once.

To Reproduce
Occurrence: [always]
Steps to reproduce the behavior:

  1. Wait until you have many new messages (e.g. don't open the app a few days)
  2. Open the chat list view

Expected behavior
The new data is loaded and the UI doesn't flicker.

Additional context
The flickering happens due to reactions to Event.msgsChanged which is fine in general as we have to listen to this type of event, but the UI shouldn't reload completely.

Internal Bug Tracker

Finish moving to Github

The current code is still based on the previous Git setup. To be able to build OX Talk it must be adjusted. Also some of the documentation needs to get adjusted (fix links and change build instructions).

Use contact avatars were applicable

Is your feature request related to a problem? Please describe.

The user should see contact avatars if one is set. In the contact list, in the chat list, in chats, on all profile / details screens. The source of the avatar can be local or remote.

Describe the solution you'd like

An avatar could be set by the user, the system contacts import or remote by another user via a COI contact message.

Additional context

  • The DCC right now doesn't transfer the profile image, set by the user to other contacts
  • System contact images must be mapped to contacts manually

Internal Bug Tracker

Send attachments

As the app is now able to display attachments, it should also be able to send attachments.

  • Enable the attachments button
  • Open a file chooser
  • Send the selected file via DCC
    • If required adjust the plugin to fulfill this task

Internal bug tracker

Adjust accepted message type

Is your feature request related to a problem? Please describe.
We should support the following cases:

  1. New chat message from a user the app does not know: Should show up as invite (known users chat messages are sorted in the corresponding chat)
  2. New mail message (known or unknown user): Should NOT show up as invite or in the app in general
  3. Replies to chat messages: Should always show up in chats, the source does not matter (chat / legacy mail client)

Enhance chat message view

Is your feature request related to a problem? Please describe.
If a new message arrives the chat list it is reloaded. This happens due to the index change, which forces Flutter to redraw and therefore reload the content.

Describe the solution you'd like

  • Don't reverse the list and the loading
  • Keep the index for all elements
  • The initial loading should be done with subset of messages (but all message ids), to be able to scroll to the end of the list
  • Paged loading for old / new events should be added

Additional context
This ticket involves the addition of paged loading in general and will lead to bigger changes.

Internal bug tracker

Support COI messages

Is your feature request related to a problem? Please describe.
The COI standard describes an extendable list of special messages. Those message should get supported.

Describe the solution you'd like
We should implement the interface which is needed to parse special COI messages. Therefore we will probably use Microformats. The DCC should forward the parsable data, while the client needs to interpret, display and handle it. This ticket is intended to provide the generally needed interface. The actual messages and the required UI will be added in separate tickets.

Additional context

  • Future / COI feature (needs clarification)

Internal Bug Tracker

Key exchange for encrypted communication

Often, when you want to exchange contact information, people enter the contact information into their phone. Some applications and messengers, such as Line, allow the user to exchange this information by scanning a QR code from the other phone. Such a code could also contain the peer's public key so that exchanging this information can be made fairly secure. Perhaps symbolized by a green lock on the chat screen (and a gray lock if the public key has been exchanged in a less trustworthy way) :-)

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.