textileio / photos Goto Github PK
View Code? Open in Web Editor NEW[DEPRECATED] Encrypted, secure, decentralized personal data wallet -- technology behind textile.photos
Home Page: https://www.textile.photos/
License: MIT License
[DEPRECATED] Encrypted, secure, decentralized personal data wallet -- technology behind textile.photos
Home Page: https://www.textile.photos/
License: MIT License
Right now, when debugging, reactotron works great when running a sim on ios or android. However, it doesn't connect when debugging on a (connected) physical device. See infinitered/reactotron#272 for a possible fix.
Some work, others have errors, others are stuck in some intermediate state with the upload progress spinning or stalled at some value.
Seems to also be documented here: facebook/react-native#19113
Removing the SVG components from PhotoViewerScreen
alleviates the problem. Simple solution would be to conditionally display the icon if on iOS...
Just thinking this through. Seems like we want,
Later on we talked about adding a block to the Thread saying that a public invite was created, we can do that later.
See this a lot when running app in background (maybe offline) mode while taking a lot of photos. The final images don't seem to load very successfully and often have duplicates.
If the node is shutdown from an actual background event triggered by the user, all is well. Probably related to #107, stemming from a background event possibly not being triggered when the app is left to close itself via the screen auto-dimming
if the app crashes while (say) two images are uploading/waiting to upload, then there's never any saga to eventually go back and update those states or those upload pies. Part of the issue in the upload library that we are using. It should really be fixed, or swapped for something more robust.
Currently, our gallery lib attempts to load all the full res images in a given thread at once. For local images, this is pretty quick. But for remote images, this can be quite slow, leading to a less optimal UX. We should consider doing something like:
Since the images are only displayed one to a 'page', this shouldn't mess up things for tiling or gallery building.
0x10e955000 + 11507321;TextilePhotos
0x10e955000 + 11501721;TextilePhotos
0x10e955000 + 11514780;TextilePhotos
0x10e955000 + 6270084;TextilePhotos
0x10e955000 + 6277360;TextilePhotos
0x10e955000 + 6281692;TextilePhotos
0x10e955000 + 6266017;TextilePhotos
0x10e955000 + 3310065;TextilePhotos
SIGSEGV
I think we need to configure the build environment to use .env.production
, but there's nothing specifying that yet.
main (main.m:14);TextilePhotos
SIGABRT
Just flagging this as something we should work to improve.
Related to textileio/go-textile#88
Feels like the status of the underlying node should be opaque to the user, especially at startup. We should be able to let the user do stuff while the node is bootstrapping, if / when we have the ability to not block while that's happening... I'm pretty sure that's taking the majority of the time during the initial startup.
Currently in DevicesRedux, the state 'added' is reached as soon as the device is added to the wallet. But we need a step after this where the device is confirmed as being paired, this is later confirmed by a message from the external device saying it received the pair.
@andrewxhill had some ideas on why this is happening, but wanted to log... opened the app, got a few new photos but one of them is from a couple weeks ago.
0x1005be000 + 12111156;TextilePhotos
0x1005be000 + 12119080;TextilePhotos
SIGABRT
0x1023a4000 + 313180;TextilePhotos
0x1023a4000 + 189524;TextilePhotos
NSInvalidArgumentException
We do this in the go CLI, may as well let it handle mobile thumbs too since we're just using a JPG version
runtime.raisebadsignal + 108;TextilePhotos
runtime.raisebadsignal + 72;TextilePhotos
main (main.m:14);TextilePhotos
SIGSEGV
I'm seeing an extra image load from the Node in the ProgressiveImage
component. It seems that the TextileImage
that loads the thumb switches it's 'path' prop from thumb
to photo
. I don't think that's necessary because there's a separate TextileImage
that loads the photo
path.
After latest update to Go layer, all the wires aren't connected correctly. Working on the update now.
WIP in #160
0x1042f8000 + 315216;TextilePhotos
0x1042f8000 + 191560;TextilePhotos
0x1042f8000 + 939340;TextilePhotos
0x1042f8000 + 938336;TextilePhotos
RCTFatalException: Unhandled JS Exception: ReferenceError: Can't find variable: Evilicon
This error is located at:
in t
in RCTScrollContentView
in RCTScrollView
in ScrollView
in t
in t
in RCTView
in n
in Connect(n)
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in t
in withCachedChildNavigation(t)
in Unknown
in n
in n
in RCTView
in t
in Connect(t)
in e
in n
in t
in RCTView
in RCTView
in t
photoTask will queue up all photos to add before they are marked as added
if photoTask is called a second time before that happens, the photo will be added a second time no problem
Currently, prob due to no peers I see an error come back when accepting a thread invite,
2018-07-16 14:50:56.387 [info][tid:com.facebook.react.JavaScript] 'error', { error:
{ [Error: failed to get block for QmTdt36G6RXktJ9UypUftiqGdogidNBmxwwNcHW39Jg3WB: context deadline exceeded]
framesToPop: 1,
code: '1',
nativeStackIOS:
[ '0 TextilePhotos 0x00000001032d4616 RCTJSErrorFromCodeMessageAndNSError + 134',
'1 TextilePhotos 0x0000000103263183 __41-[RCTModuleMethod processMethodSignature]_block_invoke_2.218 + 179',
'2 TextilePhotos 0x00000001031493a2 -[TextileNode acceptExternalThreadInvite:resolver:rejecter:] + 370',
'3 CoreFoundation 0x000000010a266ccc __invoking___ + 140',
'4 CoreFoundation 0x000000010a266b84 -[NSInvocation invoke] + 308',
'5 CoreFoundation 0x000000010a27f8d6 -[NSInvocation invokeWithTarget:] + 54',
'6 TextilePhotos 0x000000010326518c -[RCTModuleMethod invokeWithBridge:module:arguments:] + 2796',
'7 TextilePhotos 0x000000010331ac02 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 786',
'8 TextilePhotos 0x000000010331a72f _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 127',
'9 TextilePhotos 0x000000010331a6a9 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 25',
'10 libdispatch.dylib 0x000000010cc2e807 _dispatch_call_block_and_release + 12',
'11 libdispatch.dylib 0x000000010cc2f848 _dispatch_client_callout + 8',
'12 libdispatch.dylib 0x000000010cc37c41 _dispatch_queue_serial_drain + 1305',
'13 libdispatch.dylib 0x000000010cc38556 _dispatch_queue_invoke + 328',
'14 libdispatch.dylib 0x000000010cc343a0 _dispatch_queue_override_invoke + 726',
'15 libdispatch.dylib 0x000000010cc3b3c8 _dispatch_root_queue_drain + 664',
'16 libdispatch.dylib 0x000000010cc3b0d2 _dispatch_worker_thread3 + 132',
'17 libsystem_pthread.dylib 0x000000010d159169 _pthread_wqthread + 1387',
'18 libsystem_pthread.dylib 0x000000010d158be9 start_wqthread + 13' ],
userInfo: { NSLocalizedDescription: 'failed to get block for QmTdt36G6RXktJ9UypUftiqGdogidNBmxwwNcHW39Jg3WB: context deadline exceeded' },
domain: 'go',
line: 2111,
column: 26,
sourceURL: 'http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false' } }
We'll need to do something with those errors
When you tap on the '!', the toast pops up with no message.
While #46 addresses node life cycle issues during the normal functioning of the app, it does not address the RN reload issue in the simulator. Thought I had fixed that, but no. The deal is that there's no "hook" to shutdown the node with (that i could find / know of)... and we seem to lose a reference to the existing go layer mobile node instance. So, a new one is created for each reload. You'll see some wonkiness in that the thumbs just show up white, but a lot more badness is happening under the hood.
When upgrading from (probably) the app store version of the app, to what we're working on for thread invites, the app tries adding all sorts of old photos, probably all old photos. Need to look into this and see if there's a migration issue.
We need to let the user know that
It would be nice to have a pop-out kind of second onboarding experience where we can walk them through the steps.
Using the timestamp as the getPhotos cursor allows downloaded/edited photos to sometimes mess up all uploading or not be uploaded themselves.
Needs a photo uuid based parsing of new photos
Currently the state is shown in the placeholder text that is removed when there are photos in the grid.
Right now, the number of grid columns (3) is fixed. This looks strange when the device is rotated. We should compute the optimal column count and update this dynamically when the phone is rotated.
currently they work but are converted to some static form, guessing jpg
I flow the install steps , but get this "mobile.Mobile" module dose not exist ? what is wrong ?
/Users/chaim/Downloads/textile-mobile-master/android/app/src/main/java/com/textilephotos/textileipfs/TextileIPFSModule.java:14: error: module mobile dose not exist.
import mobile.Mobile;
^
/Users/chaim/Downloads/textile-mobile-master/android/app/src/main/java/com/textilephotos/textileipfs/TextileIPFSModule.java:15: error: module mobile dose not exist.
import mobile.Node;
^
/Users/chaim/Downloads/textile-mobile-master/android/app/src/main/java/com/textilephotos/textileipfs/TextileIPFSModule.java:23: error: can not find symbol
private static Node textile = null;
^
symbol: class Node
location : class TextileIPFSModule
/Users/chaim/Downloads/textile-mobile-master/android/app/src/main/java/com/textilephotos/textileipfs/TextileIPFSModule.java:51:error: can not find symbol
textile = Mobile.newTextile(dataDir, apiHost);
^
symbol : var Mobile
location : class TextileIPFSModule
4 δΈͺ errors
:app:compileDebugJavaWithJavac FAILED
RCTFatalException: Unhandled JS Exception: TypeError: undefined is not an object (evaluating 'e.meta.username')
This error is located at:
in t
in Connect(t)
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in Connect(t)
in t
in t
in withCachedChildNavigation(t)
in Unknown
in n
in n
in RCTView
in t
in Connect(t)
in e
in n
in t
in RCTView
in RCTView
in t
Something in the form of,
specifically, the node wont take care of the URL, path, or the creation of the from
parameter
@asutula I think you had some update on this, but I can't remember what it was and didn't see an issue for it. Still seeing them from time to time.
RCTFatalException: Unhandled JS Exception: Invariant Violation: Objects are not valid as a React child (found: object with keys {domain, message, code}).
This error is located at:
in RCTText
in Text
in RCTView
in n
in RCTView
in e
in RCTView
in n
in Connect(n)
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in t
in withCachedChildNavigation(t)
in Unknown
in n
in n
in RCTView
in t
in Connect(t)
in e
in n
in t
in RCTView
in RCTView
in t
Currently just passes through to success. Need to look at what errors happen here,
https://github.com/textileio/textile-mobile/pull/148/files#diff-e5eeead3c8fd48e9ba45bdcc42dc0f68R22
Since we rely on AppState to manage the IPFS node and photo querying logic, we need to have a consistent API to work from. Need to investigate exactly what the inconsistency is and fine a work around.
This would require code changes (the API from 1 -> 2 has changed), but comes with benefits such as better support for more recent react-native versions.
Its time to start formal unit/integration testing. React Native provides pretty good Jest-based testing facilities, including auto-mocking modules etc. There are also some examples for mocking custom NativeModules.
Here is a failing password,
%&6fkuJQJBOuEaZlH5yFj&EUFgyp#y66!G7cj4dwHv
What I've been able to see:
RCTFatalException: Unhandled JS Exception: Invariant Violation: Objects are not valid as a React child (found: object with keys {domain, message, code}).
This error is located at:
in RCTText
in Text
in RCTView
in n
in RCTView
in e
in RCTView
in a
in Connect(a)
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in RCTView
in n
in t
in n
in RCTView
in RCTView
in t
in RCTView
in e
in r
in Unknown
in n
in n
in t
in t
in withCachedChildNavigation(t)
in Unknown
in n
in n
in RCTView
in t
in Connect(t)
in e
in n
in t
in RCTView
in RCTView
in t
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.