flowcrypt / flowcrypt-ios Goto Github PK
View Code? Open in Web Editor NEWFlowCrypt iOS App
Home Page: https://flowcrypt.com
License: Other
FlowCrypt iOS App
Home Page: https://flowcrypt.com
License: Other
can use Gmail IMAP search extension on Gmail accounts, so that users can continue using gmail search tricks
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.
currently can only see the very last few messages
// 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] {
depending if the contents were encrypted or not
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
If the date is today, show time
if the date is not today, show date
Applies both to inbox view and Msg view
Check out how the Android app does it
eg when opening a message
currently it just alerts
there should be a common handling mechanism for these errors, probably a retry/cancel button
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.
where appropriate
Core folder should only contain classes directly related to the TypeScript core
do not use force unwraping(let userInfo: NSDictionary = notification.userInfo! as NSDictionary) and so on
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:
It would be better to increase it to take up as much space around the icon as possible, for all icons, maybe like this:
On the splash screen
Privacy -> https://flowcrypt.com/privacy
License -> https://flowcrypt.com/license
Security -> https://flowcrypt.com/docs/technical/security.html
seems to be taking very long, like 30-45 seconds
shoudl show more appropriate err msg
add libs as pods not as source files. Easier to maintain, improve compile time
When I keep scrolling down, I want to see more messages until there are no more to show
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:
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.
4 issues to fix:
open menu in landscape mode, then switch to portrait:
Can even still tap one of the inbox items.. (bug):
there are few places where you have retain cycle.
Your viewcontrollers would never dealocated
//// 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
//}
follow up from #25 currently only sha256
https://tools.ietf.org/html/rfc4880#section-9.4
ID Algorithm Text Name
-- --------- ---------
1 - MD5 [HAC] "MD5"
2 - SHA-1 [FIPS180] "SHA1"
3 - RIPE-MD/160 [HAC] "RIPEMD160"
8 - SHA256 [FIPS180] "SHA256"
9 - SHA384 [FIPS180] "SHA384"
10 - SHA512 [FIPS180] "SHA512"
11 - SHA224 [FIPS180] "SHA224"
Eg when I know I'm expecting a message, I intuitively keep pulling down
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.
to reproduce:
The message should be visible as read right away when hitting back button, similar how archive button will show visible result right away.
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);
}
}
May I contribute to this project?
It should say
Attachments not implemented yet
Right now it only searches in inbox.
If user archived the backup email, the app won't find it, which is a bug.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.