~repos /only-bible-app

#kotlin#android#ios

git clone https://pyrossh.dev/repos/only-bible-app.git

The only bible app you will ever need. No ads. No in-app purchases. No distractions.


9b741171 Peter John

1 year ago
fix navigation
.idea/androidTestResultsUserPreferences.xml ADDED
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AndroidTestResultsUserPreferences">
4
+ <option name="androidTestResultsTableState">
5
+ <map>
6
+ <entry key="-1920874200">
7
+ <value>
8
+ <AndroidTestResultsTableState>
9
+ <option name="preferredColumnWidths">
10
+ <map>
11
+ <entry key="Duration" value="90" />
12
+ <entry key="Pixel_3a_API_34_extension_level_7_arm64-v8a" value="120" />
13
+ <entry key="Tests" value="360" />
14
+ </map>
15
+ </option>
16
+ </AndroidTestResultsTableState>
17
+ </value>
18
+ </entry>
19
+ </map>
20
+ </option>
21
+ </component>
22
+ </project>
.idea/deploymentTargetSelector.xml CHANGED
@@ -13,6 +13,9 @@
13
13
  </DropdownSelection>
14
14
  <DialogSelection />
15
15
  </SelectionState>
16
+ <SelectionState runConfigName="useAppContext()">
17
+ <option name="selectionMode" value="DROPDOWN" />
18
+ </SelectionState>
16
19
  </selectionStates>
17
20
  </component>
18
21
  </project>
app/src/main/java/dev/pyrossh/onlyBible/AppHost.kt CHANGED
@@ -16,43 +16,49 @@ fun AppHost(verses: List<Verse>) {
16
16
  Drawer(navController) { openDrawer ->
17
17
  NavHost(
18
18
  navController = navController,
19
- startDestination = "/books/{book}/chapters/{chapter}",
19
+ startDestination = "/books/0/chapters/0?dir=left",
20
+ ) {
21
+ composable(
22
+ route = "/books/{book}/chapters/{chapter}?dir={dir}",
23
+ arguments = listOf(
24
+ navArgument("book") { type = NavType.IntType },
25
+ navArgument("chapter") { type = NavType.IntType },
26
+ navArgument("dir") { type = NavType.StringType },
27
+ ),
20
- enterTransition = {
28
+ enterTransition = {
29
+ val dir = this.targetState.arguments?.getString("dir") ?: "left"
30
+ val slideDirection = when (dir) {
31
+ "left" -> AnimatedContentTransitionScope.SlideDirection.Left
32
+ else -> AnimatedContentTransitionScope.SlideDirection.Right
33
+ }
21
- slideIntoContainer(
34
+ slideIntoContainer(
22
- AnimatedContentTransitionScope.SlideDirection.Left,
35
+ slideDirection,
23
- tween(400),
36
+ tween(400),
24
- )
37
+ )
25
- },
38
+ },
26
39
  // exitTransition = {
27
40
  // slideOutOfContainer(
28
41
  // AnimatedContentTransitionScope.SlideDirection.Left,
29
42
  // tween(300),
30
43
  // )
31
44
  // },
32
- popEnterTransition = {
45
+ popEnterTransition = {
33
- slideIntoContainer(
46
+ slideIntoContainer(
34
- AnimatedContentTransitionScope.SlideDirection.Right,
47
+ AnimatedContentTransitionScope.SlideDirection.Right,
35
- tween(400),
48
+ tween(400),
36
- )
49
+ )
37
- },
50
+ },
38
- popExitTransition = {
51
+ popExitTransition = {
39
- slideOutOfContainer(
52
+ slideOutOfContainer(
40
- AnimatedContentTransitionScope.SlideDirection.Right,
53
+ AnimatedContentTransitionScope.SlideDirection.Right,
41
- tween(400),
54
+ tween(400),
42
- )
55
+ )
43
- }
56
+ }
44
- ) {
45
- composable(
46
- route = "/books/{book}/chapters/{chapter}",
47
- arguments = listOf(
48
- navArgument("book") { type = NavType.IntType },
49
- navArgument("chapter") { type = NavType.IntType },
50
- )
51
57
  ) {
52
58
  ChapterScreen(
53
59
  verses = verses,
54
- bookIndex = it.arguments?.getInt("book") ?: 0,
60
+ bookIndex = it.arguments?.getInt("book")!!,
55
- chapterIndex = it.arguments?.getInt("chapter") ?: 0,
61
+ chapterIndex = it.arguments?.getInt("chapter")!!,
56
62
  navController = navController,
57
63
  openDrawer = openDrawer,
58
64
  )
app/src/main/java/dev/pyrossh/onlyBible/ChapterScreen.kt CHANGED
@@ -120,24 +120,31 @@ fun ChapterScreen(
120
120
  // println("END " + dragAmount);
121
121
  if (dragAmount < 0) {
122
122
  val pair = Verse.getForwardPair(bookIndex, chapterIndex)
123
- navController.navigate(route = "/books/${pair.first}/chapters/${pair.second}")
123
+ navController.navigate(route = "/books/${pair.first}/chapters/${pair.second}?dir=left")
124
124
  } else if (dragAmount > 0) {
125
125
  val pair = Verse.getBackwardPair(bookIndex, chapterIndex)
126
- if (navController.currentBackStackEntry?.arguments != null) {
126
+ if (navController.previousBackStackEntry != null) {
127
127
  val previousBook =
128
- navController.currentBackStackEntry?.arguments?.getInt("book")
128
+ navController.previousBackStackEntry?.arguments?.getInt("book")
129
129
  ?: 0
130
130
  val previousChapter =
131
- navController.currentBackStackEntry?.arguments?.getInt("chapter")
131
+ navController.previousBackStackEntry?.arguments?.getInt("chapter")
132
132
  ?: 0
133
+ // println("currentBackStackEntry ${previousBook} ${previousChapter} || ${pair.first} ${pair.second}")
133
134
  if (previousBook == pair.first && previousChapter == pair.second) {
135
+ println("Popped")
134
136
  navController.popBackStack()
137
+ } else {
138
+ navController.navigate(
139
+ route = "/books/${pair.first}/chapters/${pair.second}?dir=right",
140
+ )
135
141
  }
142
+ } else {
143
+ // println("navigated navigate")
144
+ navController.navigate(
145
+ route = "/books/${pair.first}/chapters/${pair.second}?dir=right",
146
+ )
136
147
  }
137
- navController.popBackStack(
138
- route = "/books/${pair.first}/chapters/${pair.second}",
139
- inclusive = false,
140
- )
141
148
  }
142
149
  },
143
150
  onHorizontalDrag = { change, da ->
@@ -209,7 +216,7 @@ fun ChapterScreen(
209
216
  }
210
217
  Text(
211
218
  modifier = Modifier
212
- .padding(bottom = 10.dp)
219
+ .padding(bottom = 16.dp)
213
220
  .onGloballyPositioned { coordinates ->
214
221
  val boundsInWindow = coordinates.boundsInWindow()
215
222
  selectedVerseBounds = coordinates.boundsInWindow()
@@ -229,33 +236,26 @@ fun ChapterScreen(
229
236
  }
230
237
  )
231
238
  },
239
+ style = TextStyle(
240
+ background = background,
241
+ fontFamily = fontFamily,
242
+ color = Color.Black,
243
+ fontWeight = FontWeight.W400,
244
+ fontSize = 16.sp,
245
+ lineHeight = 22.sp,
246
+ letterSpacing = 0.sp,
247
+ ),
232
248
  text = buildAnnotatedString {
233
249
  withStyle(
234
250
  style = SpanStyle(
235
- background = background,
236
- fontFamily = fontFamily,
237
- fontSize = 14.sp,
251
+ fontSize = 13.sp,
238
252
  color = Color(0xFF9A1111),
239
- // fontSize = if (it.verseIndex == 0) 24.sp else 14.sp,
240
- fontWeight = FontWeight.W600,
253
+ fontWeight = FontWeight.W700,
241
- // color = if (it.verseIndex == 0) Color.Black else Color(0xFF9A1111),
242
254
  )
243
255
  ) {
244
256
  append("${v.verseIndex + 1} ")
245
- // append(if (it.verseIndex == 0) "${chapterIndex + 1} " else "${it.verseIndex + 1} ")
246
- }
247
- withStyle(
248
- style = SpanStyle(
249
- background = background,
250
- fontFamily = fontFamily,
251
- // fontFamily = FontFamily.Serif,
252
- fontSize = 16.sp,
253
- fontWeight = FontWeight.Normal,
254
- color = Color.Black,
255
- )
256
- ) {
257
- append(v.text)
258
257
  }
258
+ append(v.text)
259
259
  }
260
260
  )
261
261
  }
app/src/main/java/dev/pyrossh/onlyBible/Drawer.kt CHANGED
@@ -246,7 +246,7 @@ fun Drawer(
246
246
  menuType = MenuType.Chapter
247
247
  }
248
248
  MenuType.Chapter -> {
249
- navController.navigate(route = "/books/${bookIndex}/chapters/${c}")
249
+ navController.navigate(route = "/books/${bookIndex}/chapters/${c}?dir=left")
250
250
  drawerState.close();
251
251
  }
252
252
  }