Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

conversation view in inbox and message screen #74

Open
tomholub opened this issue Aug 8, 2017 · 9 comments · May be fixed by #2821
Open

conversation view in inbox and message screen #74

tomholub opened this issue Aug 8, 2017 · 9 comments · May be fixed by #2821
Assignees
Milestone

Comments

@tomholub
Copy link
Collaborator

tomholub commented Aug 8, 2017

this will be a big one - we'll get to this when all of the basics are done

@tomholub tomholub added this to the sometime later milestone Aug 8, 2017
@tomholub tomholub modified the milestones: even later, sometime later Aug 17, 2017
@tomholub
Copy link
Collaborator Author

tomholub commented Sep 5, 2019

part of #714

@tomholub tomholub modified the milestones: even later, soon Jun 3, 2021
@tomholub
Copy link
Collaborator Author

tomholub commented Jun 3, 2021

I'd like to consider a simpler version of this issue.

Did you say there was an issue managing more than one webview on a screen?

To simplify, we could consider:

  • only use conversation view in inbox when Gmail API is used. This means that inbox items will be equivalent between FlowCrypt app and Gmail app
  • when I click a conversation, render a similar conversation list that Gmail renders, where I can click and unpack individual messages in conversation, with the following changes compared to Gmail app:
    • only one email at a time can be unpacked (unpacking another email will pack the previously unpacked email)
    • by default, always unpack the first unread email in the conversation (which contains quoted previous emails anyway - usually)

@DenBond7
Copy link
Collaborator

Hi @sosnovsky. I need some advice on this issue.

Please try the freshest changes at cb0f6c3. (just in case, it may crashes) This commit contains changes that show how I can organize threads in the app.

I've spent a few weeks researching, trying different approaches, and so on. This task is terrible as it will include many breaking changes in the app to support compatibility with IMAP realization for other email providers. I have to review and change about 50% of the app functionality.

I'm asking you to check the current progress as I don't see the appropriate deadline for this task for now(this task can easily take a few weeks more). I've tried to use a similar approach as we have on the iOS app and Gmail app for Android. But it doesn't work well. I can't show the whole conversation on a single screen. The last changes display a list of threads -> clicking on a thread opens ViewPager with thread details(messages list) -> clicking on a message opens ViewPager with message details.

I'd like to hear some feedback. Need to know if it looks ok and if I should work that way. Or I should to find a way to show conversation on a single screen.

@sosnovsky
Copy link
Collaborator

sosnovsky commented Sep 13, 2024

Hi @DenBond7, what are difficulties with implementing full conversation view on the single screen - some technical limitations or it's more about positioning UI elements?
Do you try to implement conversation view only for Gmail or for other IMAP providers too?

Current implementation is better than showing single messages on inbox screen, but having full conversation on the single screen without need to open separate ViewPager for each message will be more convenient, and more common for mobile email clients.

@DenBond7
Copy link
Collaborator

what are difficulties with implementing full conversation view on the single screen - some technical limitations or it's more about positioning UI elements?

If to be short - both of them. More details:

  1. Performance and expected UI behavior. I have HTML. I need to use WebView. It uses more resources than other views. It's logical to use the RecyclerView here for better performance. However, RecyclerView + WebView is not a good choice because both of them use scrolling and conflict. I catch unexpected scrolling and content jumping. I can render all messages as is one by one. It work well, but only for small conversations. For big conversations the app will exceed RAM limitations very soon. Also, I have ViewPager for switching between threads on that screen. It adds more unexpected swipes(but I think it can be fixed). I've tested a lot of mobile clients and haven't found any that implemented a conversation view(looks like it's not simple)) ). Also, I've investigated the Gmail App for Android. It looks like it uses only a single WebView(custom) to show messages in a thread. That's why UI looks smoothy there. Maybe it's the right direction.
  2. IMAP. For now, the conversation view works only for Gmail API. But combining different behaviors generates a lot of changes in the code(database, syncing and so on). + testing all of that. It's a lot of work ((.

Current implementation is better than showing single messages on inbox screen, but having full conversation on the single screen without need to open separate ViewPager for each message will be more convenient, and more common for mobile email clients.

Agree. that's why I looked for your advice)). The main question here - is time. I've already spent a lot of time and don't see the appropriate results. And unfortunately can't predict any deadlines. I need to know if I should continue or maybe it will be better to switch to other issues and leave the current one for a better time.

@sosnovsky
Copy link
Collaborator

IMAP. For now, the conversation view works only for Gmail API. But combining different behaviors generates a lot of changes in the code(database, syncing and so on). + testing all of that. It's a lot of work ((.

Ok, I think we can leave it as is for IMAP, so it'll continue showing single messages, not conversation view.
As IMAP users are probably just a little percent of total users count.

Also, I've investigated the Gmail App for Android. It looks like it uses only a single WebView(custom) to show messages in a thread. That's why UI looks smoothy there. Maybe it's the right direction.

Do you think it's possible to implement conversation view this way in our app too? We can try it, and if you'll see that it should work - let's go this way.

@DenBond7
Copy link
Collaborator

Do you think it's possible to implement conversation view this way in our app too? We can try it, and if you'll see that it should work - let's go this way.

I'm going to investigate it this week

DenBond7 added a commit that referenced this issue Nov 7, 2024
DenBond7 added a commit that referenced this issue Nov 7, 2024
DenBond7 added a commit that referenced this issue Nov 7, 2024
DenBond7 added a commit that referenced this issue Nov 13, 2024
DenBond7 added a commit that referenced this issue Nov 14, 2024
DenBond7 added a commit that referenced this issue Nov 27, 2024
DenBond7 added a commit that referenced this issue Nov 27, 2024
DenBond7 added a commit that referenced this issue Nov 27, 2024
DenBond7 added a commit that referenced this issue Nov 28, 2024
DenBond7 added a commit that referenced this issue Dec 2, 2024
DenBond7 added a commit that referenced this issue Dec 2, 2024
DenBond7 added a commit that referenced this issue Dec 2, 2024
@DenBond7
Copy link
Collaborator

DenBond7 commented Dec 5, 2024

Need to add tests for the following cases(will be updated):

  • Threads list
    • Identify thread with attachments
    • Identify thread with pgp
    • updating thread list
    • correct recipients and messages count + draft count
  • Thread details screen
    • Display attachments list
    • lookup public keys and re-verify signature if missing pubkey(maybe can be moved for later)
    • swipe-to-refresh to fetch the last state of a thread
    • delete a draft
    • preview attachment
    • download attachment
    • Show verification results
    • reply/reply all/forward block for the last one message
    • ability to reply/reply all/forward for some message in a thread
    • forwarding messages with embedded attachments
    • changing reading state for an opened message
    • downloading inlined encrypted attachments
    • update thread details during swipe-to-refresh and other updates
    • update thread details after sending a new message
    • handle a situation when a thread not found
  • Change labels option
    • on thread details screen
    • on threads list screen
  • syncing thread on thread details screen
    • updating labels
    • deleting messages
    • adding a new message
  • add actions on a thread
    • on the threads list screen
      • read/unread
      • delete
      • archive
      • move to spam
      • unspam
      • delete permanently
      • untrash -> move to inbox
    • on the thread details screen
      • unread
      • delete
      • archive
      • move to spam
      • unspam
      • delete permanently
      • untrash -> move to inbox
  • fix drafts
    • editing drafts from the messages list on the thread details screen
    • updating thread messages list after adding a draft
    • updating thread messages list after updating a draft
    • updating thread messages list after deleting a draft
    • deleting a draft after sending a message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants