Skip to content

Commit 7f7c450

Browse files
committed
feat: fix brownie android
1 parent ff11dd4 commit 7f7c450

21 files changed

Lines changed: 134 additions & 116 deletions

File tree

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
package com.callstack.brownfield.android.example
22

3-
//typealias BrownfieldStore = com.callstack.rnbrownfield.demo.expoapp54.BrownfieldStore
4-
//typealias User = com.callstack.rnbrownfield.demo.expoapp54.User
3+
typealias BrownfieldStore = com.callstack.rnbrownfield.demo.expoapp54.BrownfieldStore
4+
typealias User = com.callstack.rnbrownfield.demo.expoapp54.User
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
package com.callstack.brownfield.android.example
22

3-
//typealias BrownfieldStore = com.callstack.rnbrownfield.demo.expoapp55.BrownfieldStore
4-
//typealias User = com.callstack.rnbrownfield.demo.expoapp55.User
3+
typealias BrownfieldStore = com.callstack.rnbrownfield.demo.expoapp55.BrownfieldStore
4+
typealias User = com.callstack.rnbrownfield.demo.expoapp55.User

apps/AndroidApp/app/src/main/java/com/callstack/brownfield/android/example/MainActivity.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.callstack.brownfield.android.example
22

3-
//import com.callstack.brownie.registerStoreIfNeeded
3+
import com.callstack.brownie.registerStoreIfNeeded
44
import android.content.Intent
55
import android.content.res.Configuration
66
import android.os.Bundle
@@ -30,7 +30,6 @@ import com.callstack.brownfield.android.example.components.PostMessageCard
3030
import com.callstack.brownfield.android.example.ui.theme.AndroidBrownfieldAppTheme
3131
import com.callstack.nativebrownfieldnavigation.BrownfieldNavigationDelegate
3232
import com.callstack.nativebrownfieldnavigation.BrownfieldNavigationManager
33-
import com.callstack.reactnativebrownfield.ReactNativeBrownfield
3433
import com.callstack.reactnativebrownfield.ReactNativeFragment
3534
import com.callstack.reactnativebrownfield.constants.ReactNativeFragmentArgNames
3635

@@ -55,14 +54,14 @@ class MainActivity : AppCompatActivity(), BrownfieldNavigationDelegate {
5554
).show()
5655
}
5756

58-
// registerStoreIfNeeded(
59-
// storeName = BrownfieldStore.STORE_NAME
60-
// ) {
61-
// BrownfieldStore(
62-
// counter = 0.0,
63-
// user = User(name = "Username")
64-
// )
65-
// }
57+
registerStoreIfNeeded(
58+
storeName = BrownfieldStore.STORE_NAME
59+
) {
60+
BrownfieldStore(
61+
counter = 0.0,
62+
user = User(name = "Username")
63+
)
64+
}
6665
}
6766

6867
setContent {

apps/AndroidApp/app/src/main/java/com/callstack/brownfield/android/example/components/GreetingCard.kt

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import androidx.compose.material3.Button
88
import androidx.compose.material3.MaterialTheme
99
import androidx.compose.material3.Text
1010
import androidx.compose.runtime.Composable
11-
//import androidx.compose.runtime.DisposableEffect
11+
import androidx.compose.runtime.DisposableEffect
1212
import androidx.compose.runtime.getValue
1313
import androidx.compose.runtime.mutableIntStateOf
1414
import androidx.compose.runtime.remember
@@ -17,33 +17,33 @@ import androidx.compose.ui.Alignment
1717
import androidx.compose.ui.Modifier
1818
import androidx.compose.ui.text.style.TextAlign
1919
import androidx.compose.ui.unit.dp
20-
//import com.callstack.brownfield.android.example.BrownfieldStore
21-
//import com.callstack.brownie.Store
22-
//import com.callstack.brownie.StoreManager
23-
//import com.callstack.brownie.store
24-
//import com.callstack.brownie.subscribe
20+
import com.callstack.brownfield.android.example.BrownfieldStore
21+
import com.callstack.brownie.Store
22+
import com.callstack.brownie.StoreManager
23+
import com.callstack.brownie.store
24+
import com.callstack.brownie.subscribe
2525

26-
//private fun brownieStore(): Store<BrownfieldStore>? {
27-
// return StoreManager.shared.store(BrownfieldStore.STORE_NAME)
28-
//}
26+
private fun brownieStore(): Store<BrownfieldStore>? {
27+
return StoreManager.shared.store(BrownfieldStore.STORE_NAME)
28+
}
2929

3030
@Composable
3131
fun GreetingCard(
3232
name: String,
3333
) {
3434
var counter by remember { mutableIntStateOf(0) }
3535

36-
// DisposableEffect(Unit) {
37-
// val store = brownieStore()
38-
// val unsubscribe = store?.subscribe(
39-
// selector = { state -> state.counter.toInt() },
40-
// onChange = { updatedCounter -> counter = updatedCounter }
41-
// ) ?: {}
42-
//
43-
// onDispose {
44-
// unsubscribe()
45-
// }
46-
// }
36+
DisposableEffect(Unit) {
37+
val store = brownieStore()
38+
val unsubscribe = store?.subscribe(
39+
selector = { state -> state.counter.toInt() },
40+
onChange = { updatedCounter -> counter = updatedCounter }
41+
) ?: {}
42+
43+
onDispose {
44+
unsubscribe()
45+
}
46+
}
4747

4848
MaterialCard {
4949
Column(
@@ -59,19 +59,19 @@ fun GreetingCard(
5959
textAlign = TextAlign.Center
6060
)
6161

62-
// Text(
63-
// text = "You clicked the button $counter time${if (counter == 1) "" else "s"}",
64-
// textAlign = TextAlign.Center,
65-
// style = MaterialTheme.typography.bodyMedium
66-
// )
67-
//
68-
// Button(onClick = {
69-
//// brownieStore()?.set { state ->
70-
//// state.copy(counter = state.counter + 1)
71-
//// }
72-
// }) {
73-
// Text("Increment counter")
74-
// }
62+
Text(
63+
text = "You clicked the button $counter time${if (counter == 1) "" else "s"}",
64+
textAlign = TextAlign.Center,
65+
style = MaterialTheme.typography.bodyMedium
66+
)
67+
68+
Button(onClick = {
69+
brownieStore()?.set { state ->
70+
state.copy(counter = state.counter + 1)
71+
}
72+
}) {
73+
Text("Increment counter")
74+
}
7575
}
7676
}
7777
}

apps/AppleApp/Brownfield Apple App.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
614525D52F922C06003775A1 /* Brownie.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 614525D32F922C01003775A1 /* Brownie.xcframework */; };
11+
614525D62F922C06003775A1 /* Brownie.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 614525D32F922C01003775A1 /* Brownie.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1012
614B23922F50633200CB6363 /* BrownfieldLib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 614B238D2F50633200CB6363 /* BrownfieldLib.xcframework */; };
1113
614B23932F50633200CB6363 /* BrownfieldLib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 614B238D2F50633200CB6363 /* BrownfieldLib.xcframework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
1214
614B23962F50633200CB6363 /* BrownfieldNavigation.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 614B238F2F50633200CB6363 /* BrownfieldNavigation.xcframework */; };
@@ -24,6 +26,7 @@
2426
dstPath = "";
2527
dstSubfolderSpec = 10;
2628
files = (
29+
614525D62F922C06003775A1 /* Brownie.xcframework in Embed Frameworks */,
2730
614B23972F50633200CB6363 /* BrownfieldNavigation.xcframework in Embed Frameworks */,
2831
614B239B2F50633200CB6363 /* ReactBrownfield.xcframework in Embed Frameworks */,
2932
614B23992F50633200CB6363 /* hermesvm.xcframework in Embed Frameworks */,
@@ -35,6 +38,7 @@
3538
/* End PBXCopyFilesBuildPhase section */
3639

3740
/* Begin PBXFileReference section */
41+
614525D32F922C01003775A1 /* Brownie.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Brownie.xcframework; path = package/Brownie.xcframework; sourceTree = "<group>"; };
3842
614B238D2F50633200CB6363 /* BrownfieldLib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = BrownfieldLib.xcframework; path = package/BrownfieldLib.xcframework; sourceTree = "<group>"; };
3943
614B238F2F50633200CB6363 /* BrownfieldNavigation.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = BrownfieldNavigation.xcframework; path = package/BrownfieldNavigation.xcframework; sourceTree = "<group>"; };
4044
614B23902F50633200CB6363 /* hermesvm.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = hermesvm.xcframework; path = package/hermesvm.xcframework; sourceTree = "<group>"; };
@@ -55,6 +59,7 @@
5559
isa = PBXFrameworksBuildPhase;
5660
buildActionMask = 2147483647;
5761
files = (
62+
614525D52F922C06003775A1 /* Brownie.xcframework in Frameworks */,
5863
614B23962F50633200CB6363 /* BrownfieldNavigation.xcframework in Frameworks */,
5964
614B239A2F50633200CB6363 /* ReactBrownfield.xcframework in Frameworks */,
6065
614B23982F50633200CB6363 /* hermesvm.xcframework in Frameworks */,
@@ -68,6 +73,7 @@
6873
6108E5322F40A26800EA8FA1 /* Frameworks */ = {
6974
isa = PBXGroup;
7075
children = (
76+
614525D32F922C01003775A1 /* Brownie.xcframework */,
7177
614B238D2F50633200CB6363 /* BrownfieldLib.xcframework */,
7278
614B238F2F50633200CB6363 /* BrownfieldNavigation.xcframework */,
7379
614B23902F50633200CB6363 /* hermesvm.xcframework */,

apps/AppleApp/Brownfield Apple App/BrownfieldAppleApp.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import BrownfieldLib
2-
//import Brownie
2+
import Brownie
33
import ReactBrownfield
44
import SwiftUI
55
import UIKit
@@ -91,7 +91,7 @@ struct BrownfieldAppleApp: App {
9191
ReactNativeBrownfield.shared.ensureExpoModulesProvider()
9292
#endif
9393

94-
// BrownfieldStore.register(initialState)
94+
BrownfieldStore.register(initialState)
9595
}
9696

9797
var body: some Scene {

apps/AppleApp/Brownfield Apple App/components/ContentView.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//import Brownie
1+
import Brownie
22
import ReactBrownfield
33
import SwiftUI
44
import UIKit
@@ -9,10 +9,10 @@ struct ChatMessage: Identifiable {
99
let fromRN: Bool
1010
}
1111

12-
//let initialState = BrownfieldStore(
13-
// counter: 0,
14-
// user: User(name: "Username")
15-
//)
12+
let initialState = BrownfieldStore(
13+
counter: 0,
14+
user: User(name: "Username")
15+
)
1616

1717
struct ContentView: View {
1818
var body: some View {
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
import SwiftUI
2-
//import Brownie
2+
import Brownie
33

44
struct GreetingCard: View {
55
let name: String
6-
// @UseStore(\BrownfieldStore.counter) var counter
6+
@UseStore(\BrownfieldStore.counter) var counter
77

88
var body: some View {
99
MaterialCard {
1010
Text("Hello native \(name) 👋")
1111
.font(.title3)
1212
.multilineTextAlignment(.center)
1313

14-
// Text(
15-
// "You clicked the button \(Int(counter)) time\(counter == 1 ? "" : "s")"
16-
// )
17-
// .multilineTextAlignment(.center)
18-
// .font(.body)
19-
//
20-
// Button("Increment counter") {
21-
// $counter.set { $0 + 1 }
22-
// }
23-
// .buttonStyle(.borderedProminent)
14+
Text(
15+
"You clicked the button \(Int(counter)) time\(counter == 1 ? "" : "s")"
16+
)
17+
.multilineTextAlignment(.center)
18+
.font(.body)
19+
20+
Button("Increment counter") {
21+
$counter.set { $0 + 1 }
22+
}
23+
.buttonStyle(.borderedProminent)
2424
}
2525
}
2626
}
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
// import type { BrownieStore } from '@callstack/brownie';
1+
import type { BrownieStore } from '@callstack/brownie';
22

3-
// export interface BrownfieldStore extends BrownieStore {
4-
// counter: number;
5-
// user: {
6-
// name: string;
7-
// };
8-
// }
3+
export interface BrownfieldStore extends BrownieStore {
4+
counter: number;
5+
user: {
6+
name: string;
7+
};
8+
}
99

10-
// export interface SettingsStore extends BrownieStore {
11-
// theme: 'light' | 'dark';
12-
// notificationsEnabled: boolean;
13-
// privacyMode: boolean;
14-
// }
10+
export interface SettingsStore extends BrownieStore {
11+
theme: 'light' | 'dark';
12+
notificationsEnabled: boolean;
13+
privacyMode: boolean;
14+
}
1515

16-
// declare module '@callstack/brownie' {
17-
// interface BrownieStores {
18-
// BrownfieldStore: BrownfieldStore;
19-
// SettingsStore: SettingsStore;
20-
// }
21-
// }
16+
declare module '@callstack/brownie' {
17+
interface BrownieStores {
18+
BrownfieldStore: BrownfieldStore;
19+
SettingsStore: SettingsStore;
20+
}
21+
}

apps/ExpoApp54/RNApp.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { SafeAreaView } from 'react-native-safe-area-context';
22
import { Button, StyleSheet, Text, View } from 'react-native';
33
import BrownfieldNavigation from '@callstack/brownfield-navigation';
44

5+
import Counter from './components/counter';
6+
57
import { checkAndFetchUpdate } from './utils/expo-rn-updates';
68

79
export default function RNApp() {
@@ -10,6 +12,8 @@ export default function RNApp() {
1012
<Text style={styles.title}>Expo React Native Brownfield</Text>
1113

1214
<View style={styles.content}>
15+
<Counter />
16+
1317
<Button
1418
title="Navigate to Settings"
1519
onPress={() => BrownfieldNavigation.navigateToSettings()}

0 commit comments

Comments
 (0)