Skip to content

Commit 16a3cec

Browse files
committed
Cleanup demo edge cases and beautify
1 parent 95fafdb commit 16a3cec

File tree

17 files changed

+544
-261
lines changed

17 files changed

+544
-261
lines changed

demo/android/app/src/main/kotlin/xyz/juicebox/demo/SecretIdStorageModule.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
55
import com.facebook.react.bridge.ReactMethod
66
import com.facebook.react.bridge.Promise
77
import com.google.android.gms.auth.blockstore.Blockstore
8+
import com.google.android.gms.auth.blockstore.DeleteBytesRequest
89
import com.google.android.gms.auth.blockstore.RetrieveBytesRequest
910
import com.google.android.gms.auth.blockstore.StoreBytesData
1011

@@ -13,6 +14,25 @@ class SecretIdStorageModule(reactContext: ReactApplicationContext) :
1314

1415
override fun getName() = NAME
1516

17+
@ReactMethod
18+
fun isAvailable(promise: Promise) {
19+
// TODO: Check if cloud backup is available and fallback to GDrive
20+
promise.resolve(null)
21+
}
22+
23+
@ReactMethod
24+
fun delete(promise: Promise) {
25+
val client = Blockstore.getClient(reactApplicationContext)
26+
val deleteRequest = DeleteBytesRequest.Builder()
27+
.setKeys(arrayListOf(SECRET_ID_BYTES_KEY))
28+
.build()
29+
client.deleteBytes(deleteRequest).addOnSuccessListener {
30+
promise.resolve(null)
31+
}.addOnFailureListener {
32+
promise.reject("0", "failed $it", it)
33+
}
34+
}
35+
1636
@ReactMethod
1737
fun register(secretId: String, promise: Promise) {
1838
val client = Blockstore.getClient(reactApplicationContext)

demo/assets/back.png

2.5 KB
Loading

demo/assets/checkmark.png

-2.2 KB
Binary file not shown.

demo/assets/splash.png

84.3 KB
Loading

demo/ios/JuiceboxDemo/AppDelegate.mm

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
1111
// They will be passed down to the ViewController used by React Native.
1212
self.initialProps = @{};
1313

14-
return [super application:application didFinishLaunchingWithOptions:launchOptions];
14+
15+
BOOL success = [super application:application didFinishLaunchingWithOptions:launchOptions];
16+
if (success) {
17+
// Modify as needed to match the main color of your splash.
18+
self.window.rootViewController.view.backgroundColor = [UIColor colorWithRed:28.0/255.0 green:28.0/255.0 blue:28.0/255.0 alpha:1.0];
19+
}
20+
return success;
1521
}
1622

1723
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge

demo/ios/JuiceboxDemo/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<key>CFBundleDevelopmentRegion</key>
66
<string>en</string>
77
<key>CFBundleDisplayName</key>
8-
<string>JuiceboxDemo</string>
8+
<string>Juicebox</string>
99
<key>CFBundleExecutable</key>
1010
<string>$(EXECUTABLE_NAME)</string>
1111
<key>CFBundleIdentifier</key>

demo/ios/JuiceboxDemo/LaunchScreen.storyboard

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
1717
<subviews>
1818
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="splash" translatesAutoresizingMaskIntoConstraints="NO" id="S5V-mY-TnP">
19-
<rect key="frame" x="112.5" y="258.5" width="150" height="150"/>
19+
<rect key="frame" x="125" y="271" width="125" height="125"/>
2020
<constraints>
21-
<constraint firstAttribute="width" constant="150" id="7hb-7s-QPc"/>
22-
<constraint firstAttribute="height" constant="150" id="zGa-Wg-Mx7"/>
21+
<constraint firstAttribute="width" constant="125" id="7hb-7s-QPc"/>
22+
<constraint firstAttribute="height" constant="125" id="zGa-Wg-Mx7"/>
2323
</constraints>
2424
</imageView>
2525
</subviews>

demo/ios/SecretIdStorage.mm

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
@interface RCT_EXTERN_MODULE(SecretIdStorage, NSObject)
44

5+
RCT_EXTERN_METHOD(
6+
isAvailable:(RCTPromiseResolveBlock)resolve
7+
reject:(RCTPromiseRejectBlock)reject
8+
)
9+
10+
RCT_EXTERN_METHOD(
11+
delete:(RCTPromiseResolveBlock)resolve
12+
reject:(RCTPromiseRejectBlock)reject
13+
)
14+
515
RCT_EXTERN_METHOD(
616
register:(NSString *)secretId
717
resolve:(RCTPromiseResolveBlock)resolve

demo/ios/SecretIdStorage.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,37 @@ class SecretIdStorage: NSObject {
2222
static let recordType = "SecretId"
2323
static let recordId = CKRecord.ID(recordName: "xyz.juicebox.jbid")
2424

25+
@objc
26+
func isAvailable(
27+
_ resolve: @escaping RCTPromiseResolveBlock,
28+
reject: @escaping RCTPromiseRejectBlock
29+
) {
30+
Task {
31+
do {
32+
try await checkAccountStatus()
33+
resolve(())
34+
} catch {
35+
reject("\((error as NSError).code)", "storage not available: \(error)", error)
36+
}
37+
}
38+
}
39+
40+
@objc
41+
func delete(
42+
_ resolve: @escaping RCTPromiseResolveBlock,
43+
reject: @escaping RCTPromiseRejectBlock
44+
) {
45+
Task {
46+
do {
47+
try await checkAccountStatus()
48+
try await container.privateCloudDatabase.deleteRecord(withID: Self.recordId)
49+
resolve(())
50+
} catch {
51+
reject("\((error as NSError).code)", "Failed to delete record: \(error)", error)
52+
}
53+
}
54+
}
55+
2556
@objc
2657
func register(
2758
_ secretId: String,

demo/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@
1515
"@react-navigation/stack": "^6.3.19",
1616
"react": "18.2.0",
1717
"react-native": "0.72.6",
18-
"react-native-action-sheet": "^2.2.0",
1918
"react-native-gesture-handler": "^2.13.3",
2019
"react-native-randombytes": "^3.6.1",
2120
"react-native-safe-area-context": "^4.7.3",
2221
"react-native-screens": "^3.26.0",
23-
"react-native-toast-message": "^2.1.6",
2422
"text-encoding-polyfill": "^0.6.7"
2523
},
2624
"devDependencies": {

0 commit comments

Comments
 (0)