Giter VIP home page Giter VIP logo

flowcrypt-ios's People

Contributors

denbond7 avatar dependabot[bot] avatar ekievsky avatar fcvakintos avatar flowcrypt-machine-user avatar ioanmo226 avatar ivan-ushakov avatar ivanpizhenko avatar kharchevskyi avatar limonte avatar martgil avatar paragdulam avatar qsoftdevelopment avatar romankovalchuk2019 avatar seisvelas avatar snyk-bot avatar sosnovsky avatar tomholub avatar vahram-papazyan 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

Watchers

 avatar  avatar  avatar  avatar

flowcrypt-ios's Issues

extend ui tests

  • log in -> cancel
  • log in -> approve -> bad pass phrase
  • log in -> approve -> no backups -> switch email
  • log in -> approve -> no backups -> generate pubkey -> weak pass phrase
  • log in -> approve -> no backups -> generate pubkey -> good pass phrase -> wrong repeat
  • log in -> approve -> no backups -> generate pubkey -> good pass phrase -> correct repeat -> create key
  • log in -> approve -> no backups -> generate pubkey -> switch accounts
  • log in -> approve -> loaded 1 backup -> good pass phrase -> inbox
  • restart app -> loads inbox
  • send new msg -> inbox -> switch to sent -> open sent msg and verify content, recipient, subject
  • send new msg -> no pubkey
  • move msg to archive -> verify in archive
  • move msg to Trash -> verify in trash -> verify no bin button on moved msg
  • inbox -> open first msg -> to trash -> inbox -> open following first msg (to prevent crash as in #119)

Implement search in inbox

can use Gmail IMAP search extension on Gmail accounts, so that users can continue using gmail search tricks

delete/trash stopped working properly after PR

@RomanKovalchuk2019

After #32 landed, the "trash" icon will no longer move mail to trash folder. Maybe it does something? But I'm not sure what.

When I click it on a particular message, I expect it will say "Moved to trash" and show inbox, without that message. Instead, it stays in message view. If I click trash again, nothing happens again. I can go back to inbox, refresh it and still see the message. Then I can open it again, click trash again, and nothing happens.

If I kill the app and retry, the trash icon on that message still does nothing.

This used to work.

optimise produceHashedIteratedS2k

    // this could be further optimised. Takes about 150ms per key
    // there tend to be two keys to decrypt in an armored key, so that makes is 300 ms
    // I suspect it could be optimised to 50ms per pass, or 100ms total
    func produceHashedIteratedS2k(_ algo: String, _ prefix: [UInt8], _ salt: [UInt8], _ passphrase: [UInt8], _ count: Int) -> [UInt8] {

better to use assertion

self.private = keyDetails.private!
better to do smth like this
guard let key = keyDetails.private else {
assertionFailure("key should not be nil")
return
}

this will crash your app in tests env and wouldn't in production

Add support for manual private key import

Today, when there is no backup, the iOS app will show a Retry or Change Account button.

See what the Android app does when there is no backup found - it will give options to create a new key or import key manually.

Please do the same, but Create new key should show a toast it's not implemented once clicked.

Then Import Private Key should show options similar to what Android does, and allow the user to set up the account that way.

Increase icon tappable area?

I use an iPod touch as my debugging device.

Sometimes I have to tap an icon 2 or 3 times before it registers the tap (often I notice this when trying to open the side menu).

My guess is that maybe the tappable icon area is too small, maybe something like this:

image

It would be better to increase it to take up as much space around the icon as possible, for all icons, maybe like this:

image

consistent ui design / layout / spacing spec

There are lot of broken layouts around the app, especially when viewed on different size devices.

No thought was given to responsive design so far, and this needs to be fixed.

Here's an example of a broken layout, but there are many, and many of them are subtle.

As a part of this issue:

  • fix any obvious brokenness like the one on the screenshots below
  • fix any more subtle broken ui, and document what was fixed
  • establish common padding and margins around text and buttons, and consistently apply it throughout the app
  • document here your choices for common element padding sizes, distance between buttons, line item sizes, text sizes, etc
  • test and fix design for devices starting with iPod touch all the way up to iPhone X
  • test the app on at least one iPad and fix any obviously broken parts
  • test the app in landscape iPhone view and fix where necessary
  • provide screenshots of what was fixed and how the result looks
  • fix or propose ui / design improvements
  • fix xcode layout warnings
  • when all done, please provide a screenshots of what the app looks on several screens on small iPhone, large iPhone and any tablet.

migrate to Texture, declare ui in code

My biggest worry is that if we do all UI in code, there will be too much code, or code readability will suffer by mixing UI and logic.

Hopefully you can find a way to minimize that.

side menu fixes / improvements

4 issues to fix:

  • darken or blur tappable area (to the right side of the menu) that can hide the menu
  • fix hiding side menu when in landscape mode (currently tapping outside does not hide menu)
  • fix menu layout when I open menu in landscape mode, then switch to portrait mode while menu is still open (screenshots below)
  • make sure closing tappable area self-adjusts when I switch from landscape to portrait and back

open menu in landscape mode, then switch to portrait:

image

Can even still tap one of the inbox items.. (bug):

image

solve imap session renew token

//// todo - handle this proactively instead of waiting for failure, based on access token expiration
//// todo - would this fail on non-english phones? Any other way to catch the right error?
//// todo - this can cause infinite loop, where is the auth renew handling?
//if error?.localizedDescription == "Unable to authenticate with the current session's credentials." {
//    self.fetchEmailByImap()
//    return
//}

menu folders ordering and naming

  • Inbox should be always ordered as first
  • it should be showing as Inbox, not INBOX, regardless of actual folder name
  • All Mail should always be second, when present

Eg here example of what we don't want:

image

Google oAuth verification

  1. make a video
  2. wait for #38 (#57) to land
  3. release a new version to TestFlight
  4. submit to Apple for TestFlight review
  5. wait for Apple to review it
  6. submit to Google for verification
  7. wait for response from Google
  8. respond to google with clarification
  9. submit to apple for final review
  10. let google know when reviewed by apple
  11. ???
  12. done

top bar improvements + icon spacing

fix icon spacing in compose - should lean towards the right side, with equal spacing between them, leaving enough space for the title (eg Compose)

Hide trash icon when the message is already in Trash, relevant code (to fix):

        if self.path == "[Gmail]/Trash" {
            // self.btnTrash.isHidden = true; // todo - hide the trash btn
        }

and to remove:

        guard self.path != "[Gmail]/Trash" else { // todo - does not need to be here once trash btn is hidden
            self.showToast("Message is already in trash")
            return
        }

Ensure spacing of other icons does not break without the trash icon.

make read message visibly read after back btn

  1. open unread message
  2. hit the back button
  3. message still looks unread
  4. refresh inbox by pulling down -> now correctly read

The message should be visible as read right away when hitting back button, similar how archive button will show visible result right away.

compose: body text improvements

  • Remove msg placeholder when focused
  • make typed text show in black
  • use standard size for composed text: 17
  • make compose field scrollable (currently cannot see text if I write too many lines)

periodically wipe key cache from swift

  private static keyCacheRenewExpiry = () => {
    // JavaScriptCore has no setTimeout. Need to wipe cache periodically from Swift instead
    if(typeof setTimeout === "function") {
      if (KEY_CACHE_WIPE_TIMEOUT) {
        clearTimeout(KEY_CACHE_WIPE_TIMEOUT);
      }
      KEY_CACHE_WIPE_TIMEOUT = setTimeout(Store.keyCacheWipe, 2 * 60 * 1000);  
    }
  }

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.