Skip to content

Commit ee7580a

Browse files
committed
feat: changes after rebase
1 parent 54e2488 commit ee7580a

File tree

5 files changed

+47
-43
lines changed

5 files changed

+47
-43
lines changed

apps/AndroidApp/app/src/expo55/java/com/callstack/brownfield/android/expo/BrownfieldStore.kt renamed to apps/AndroidApp/app/src/main/java/com/callstack/brownfield/android/example/BrownfieldStore.kt

File renamed without changes.

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,12 @@ import androidx.fragment.compose.AndroidFragment
2727
import com.callstack.brownfield.android.example.components.GreetingCard
2828
import com.callstack.brownfield.android.example.components.PostMessageCard
2929
import com.callstack.brownfield.android.example.ui.theme.AndroidBrownfieldAppTheme
30+
import com.callstack.brownie.registerStoreIfNeeded
3031
import com.callstack.nativebrownfieldnavigation.BrownfieldNavigationDelegate
3132
import com.callstack.nativebrownfieldnavigation.BrownfieldNavigationManager
3233
import com.callstack.reactnativebrownfield.ReactNativeFragment
3334
import com.callstack.reactnativebrownfield.constants.ReactNativeFragmentArgNames
3435

35-
private fun brownieStore(): Store<BrownfieldStore>? {
36-
return StoreManager.shared.store(BrownfieldStore.STORE_NAME)
37-
}
38-
3936
class MainActivity : AppCompatActivity(), BrownfieldNavigationDelegate {
4037
override fun onConfigurationChanged(newConfig: Configuration) {
4138
super.onConfigurationChanged(newConfig)

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

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,42 @@ 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
1112
import androidx.compose.runtime.getValue
1213
import androidx.compose.runtime.mutableIntStateOf
13-
import androidx.compose.runtime.saveable.rememberSaveable
14+
import androidx.compose.runtime.remember
1415
import androidx.compose.runtime.setValue
1516
import androidx.compose.ui.Alignment
1617
import androidx.compose.ui.Modifier
1718
import androidx.compose.ui.text.style.TextAlign
1819
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
25+
26+
private fun brownieStore(): Store<BrownfieldStore>? {
27+
return StoreManager.shared.store(BrownfieldStore.STORE_NAME)
28+
}
1929

2030
@Composable
2131
fun GreetingCard(
2232
name: String,
2333
) {
24-
var counter by rememberSaveable { mutableIntStateOf(0) }
34+
var counter by remember { mutableIntStateOf(0) }
35+
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+
}
2547

2648
MaterialCard {
2749
Column(
@@ -43,7 +65,11 @@ fun GreetingCard(
4365
style = MaterialTheme.typography.bodyMedium
4466
)
4567

46-
Button(onClick = { counter++ }) {
68+
Button(onClick = {
69+
brownieStore()?.set { state ->
70+
state.copy(counter = state.counter + 1)
71+
}
72+
}) {
4773
Text("Increment counter")
4874
}
4975
}

apps/ExpoApp55/src/components/counter/index.ios.tsx

Lines changed: 0 additions & 33 deletions
This file was deleted.

apps/ExpoApp55/src/components/counter/index.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,32 @@
1-
import { StyleSheet, Text } from 'react-native';
1+
import { StyleSheet, Text, Button } from 'react-native';
2+
import { useStore } from '@callstack/brownie';
23

34
const Counter = () => {
5+
const [counter, setState] = useStore('BrownfieldStore', (s) => s.counter);
6+
47
return (
58
<>
6-
<Text style={styles.text}>Brownie: To be implemented</Text>
9+
<Text style={styles.text}>Count: {counter}</Text>
10+
11+
<Button
12+
onPress={() => setState((prev) => ({ counter: prev.counter + 1 }))}
13+
title="Increment"
14+
/>
715
</>
816
);
917
};
1018

1119
export default Counter;
1220

1321
const styles = StyleSheet.create({
22+
container: {
23+
flex: 1,
24+
justifyContent: 'center',
25+
alignItems: 'center',
26+
padding: 20,
27+
},
1428
text: {
15-
fontSize: 18,
29+
fontSize: 30,
1630
fontWeight: 'bold',
1731
margin: 10,
1832
},

0 commit comments

Comments
 (0)