~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.


97341cce pyrossh

1 year ago
add SimpleParser
.idea/deploymentTargetSelector.xml CHANGED
@@ -13,6 +13,9 @@
13
13
  </DropdownSelection>
14
14
  <DialogSelection />
15
15
  </SelectionState>
16
+ <SelectionState runConfigName="composeApp">
17
+ <option name="selectionMode" value="DROPDOWN" />
18
+ </SelectionState>
16
19
  </selectionStates>
17
20
  </component>
18
21
  </project>
.idea/misc.xml CHANGED
@@ -1,4 +1,3 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
1
  <project version="4">
3
2
  <component name="ExternalStorageConfigurationManager" enabled="true" />
4
3
  <component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="corretto-19" project-jdk-type="JavaSDK">
.idea/other.xml CHANGED
@@ -28,6 +28,17 @@
28
28
  <option name="screenX" value="1080" />
29
29
  <option name="screenY" value="2160" />
30
30
  </PersistentDeviceSelectionData>
31
+ <PersistentDeviceSelectionData>
32
+ <option name="api" value="34" />
33
+ <option name="brand" value="Lenovo" />
34
+ <option name="codename" value="TB370FU" />
35
+ <option name="id" value="TB370FU" />
36
+ <option name="manufacturer" value="Lenovo" />
37
+ <option name="name" value="Tab P12" />
38
+ <option name="screenDensity" value="340" />
39
+ <option name="screenX" value="1840" />
40
+ <option name="screenY" value="2944" />
41
+ </PersistentDeviceSelectionData>
31
42
  <PersistentDeviceSelectionData>
32
43
  <option name="api" value="31" />
33
44
  <option name="brand" value="samsung" />
@@ -72,6 +83,28 @@
72
83
  <option name="screenX" value="1080" />
73
84
  <option name="screenY" value="2400" />
74
85
  </PersistentDeviceSelectionData>
86
+ <PersistentDeviceSelectionData>
87
+ <option name="api" value="34" />
88
+ <option name="brand" value="google" />
89
+ <option name="codename" value="caiman" />
90
+ <option name="id" value="caiman" />
91
+ <option name="manufacturer" value="Google" />
92
+ <option name="name" value="Pixel 9 Pro" />
93
+ <option name="screenDensity" value="360" />
94
+ <option name="screenX" value="960" />
95
+ <option name="screenY" value="2142" />
96
+ </PersistentDeviceSelectionData>
97
+ <PersistentDeviceSelectionData>
98
+ <option name="api" value="34" />
99
+ <option name="brand" value="google" />
100
+ <option name="codename" value="comet" />
101
+ <option name="id" value="comet" />
102
+ <option name="manufacturer" value="Google" />
103
+ <option name="name" value="Pixel 9 Pro Fold" />
104
+ <option name="screenDensity" value="390" />
105
+ <option name="screenX" value="2076" />
106
+ <option name="screenY" value="2152" />
107
+ </PersistentDeviceSelectionData>
75
108
  <PersistentDeviceSelectionData>
76
109
  <option name="api" value="29" />
77
110
  <option name="brand" value="samsung" />
@@ -94,6 +127,17 @@
94
127
  <option name="screenX" value="1440" />
95
128
  <option name="screenY" value="3088" />
96
129
  </PersistentDeviceSelectionData>
130
+ <PersistentDeviceSelectionData>
131
+ <option name="api" value="34" />
132
+ <option name="brand" value="samsung" />
133
+ <option name="codename" value="e1q" />
134
+ <option name="id" value="e1q" />
135
+ <option name="manufacturer" value="Samsung" />
136
+ <option name="name" value="Galaxy S24" />
137
+ <option name="screenDensity" value="480" />
138
+ <option name="screenX" value="1080" />
139
+ <option name="screenY" value="2340" />
140
+ </PersistentDeviceSelectionData>
97
141
  <PersistentDeviceSelectionData>
98
142
  <option name="api" value="33" />
99
143
  <option name="brand" value="google" />
@@ -105,6 +149,17 @@
105
149
  <option name="screenX" value="2208" />
106
150
  <option name="screenY" value="1840" />
107
151
  </PersistentDeviceSelectionData>
152
+ <PersistentDeviceSelectionData>
153
+ <option name="api" value="34" />
154
+ <option name="brand" value="google" />
155
+ <option name="codename" value="felix" />
156
+ <option name="id" value="felix" />
157
+ <option name="manufacturer" value="Google" />
158
+ <option name="name" value="Pixel Fold" />
159
+ <option name="screenDensity" value="420" />
160
+ <option name="screenX" value="2208" />
161
+ <option name="screenY" value="1840" />
162
+ </PersistentDeviceSelectionData>
108
163
  <PersistentDeviceSelectionData>
109
164
  <option name="api" value="33" />
110
165
  <option name="brand" value="google" />
@@ -149,6 +204,17 @@
149
204
  <option name="screenX" value="720" />
150
205
  <option name="screenY" value="1600" />
151
206
  </PersistentDeviceSelectionData>
207
+ <PersistentDeviceSelectionData>
208
+ <option name="api" value="34" />
209
+ <option name="brand" value="google" />
210
+ <option name="codename" value="komodo" />
211
+ <option name="id" value="komodo" />
212
+ <option name="manufacturer" value="Google" />
213
+ <option name="name" value="Pixel 9 Pro XL" />
214
+ <option name="screenDensity" value="360" />
215
+ <option name="screenX" value="1008" />
216
+ <option name="screenY" value="2244" />
217
+ </PersistentDeviceSelectionData>
152
218
  <PersistentDeviceSelectionData>
153
219
  <option name="api" value="33" />
154
220
  <option name="brand" value="google" />
@@ -193,6 +259,17 @@
193
259
  <option name="screenX" value="1812" />
194
260
  <option name="screenY" value="2176" />
195
261
  </PersistentDeviceSelectionData>
262
+ <PersistentDeviceSelectionData>
263
+ <option name="api" value="34" />
264
+ <option name="brand" value="samsung" />
265
+ <option name="codename" value="q6q" />
266
+ <option name="id" value="q6q" />
267
+ <option name="manufacturer" value="Samsung" />
268
+ <option name="name" value="SM-F956B" />
269
+ <option name="screenDensity" value="420" />
270
+ <option name="screenX" value="1856" />
271
+ <option name="screenY" value="2160" />
272
+ </PersistentDeviceSelectionData>
196
273
  <PersistentDeviceSelectionData>
197
274
  <option name="api" value="30" />
198
275
  <option name="brand" value="google" />
@@ -238,6 +315,17 @@
238
315
  <option name="screenX" value="1600" />
239
316
  <option name="screenY" value="2560" />
240
317
  </PersistentDeviceSelectionData>
318
+ <PersistentDeviceSelectionData>
319
+ <option name="api" value="34" />
320
+ <option name="brand" value="google" />
321
+ <option name="codename" value="tokay" />
322
+ <option name="id" value="tokay" />
323
+ <option name="manufacturer" value="Google" />
324
+ <option name="name" value="Pixel 9" />
325
+ <option name="screenDensity" value="420" />
326
+ <option name="screenX" value="1080" />
327
+ <option name="screenY" value="2424" />
328
+ </PersistentDeviceSelectionData>
241
329
  <PersistentDeviceSelectionData>
242
330
  <option name="api" value="29" />
243
331
  <option name="brand" value="samsung" />
composeApp/build.gradle.kts CHANGED
@@ -74,6 +74,9 @@ kotlin {
74
74
  implementation(libs.kotlinx.serialization.json)
75
75
  implementation(libs.kotlinx.coroutines.core)
76
76
  }
77
+ commonTest.dependencies {
78
+ implementation(libs.kotlin.test)
79
+ }
77
80
  }
78
81
  }
79
82
 
composeApp/src/androidMain/kotlin/dev/pyrossh/only_bible_app/Platform.android.kt CHANGED
@@ -25,8 +25,7 @@ actual fun shareVerses(verses: List<Verse>) {
25
25
  }
26
26
 
27
27
  actual object SpeechService {
28
- var isAudioPlaying = false
29
- val speechService = SpeechSynthesizer(
28
+ val speechSynthesizer = SpeechSynthesizer(
30
29
  SpeechConfig.fromSubscription(
31
30
  BuildKonfig.SUBSCRIPTION_KEY,
32
31
  BuildKonfig.SUBSCRIPTION_REGION,
@@ -34,10 +33,10 @@ actual object SpeechService {
34
33
  )
35
34
 
36
35
  actual fun init(onStarted: () -> Unit, onEnded: () -> Unit) {
37
- speechService.SynthesisStarted.addEventListener { _: Any, _: SpeechSynthesisEventArgs ->
36
+ speechSynthesizer.SynthesisStarted.addEventListener { _: Any, _: SpeechSynthesisEventArgs ->
38
37
  onStarted()
39
38
  }
40
- speechService.SynthesisCompleted.addEventListener { _: Any, _: SpeechSynthesisEventArgs ->
39
+ speechSynthesizer.SynthesisCompleted.addEventListener { _: Any, _: SpeechSynthesisEventArgs ->
41
40
  onEnded()
42
41
  }
43
42
  }
@@ -48,7 +47,7 @@ actual object SpeechService {
48
47
  }
49
48
 
50
49
  actual fun startTextToSpeech(voiceName: String, text: String) {
51
- speechService.StartSpeakingSsml(
50
+ speechSynthesizer.StartSpeakingSsml(
52
51
  """
53
52
  <speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
54
53
  <voice name="$voiceName">
@@ -60,6 +59,6 @@ actual object SpeechService {
60
59
  }
61
60
 
62
61
  actual fun stopTextToSpeech() {
63
- speechService.StopSpeakingAsync()
62
+ speechSynthesizer.StopSpeakingAsync()
64
63
  }
65
64
  }
composeApp/src/commonMain/kotlin/dev/pyrossh/only_bible_app/composables/VerseHeading.kt CHANGED
@@ -18,7 +18,6 @@ fun VerseHeading(
18
18
  fontType: FontType,
19
19
  fontSizeDelta: Int,
20
20
  ) {
21
- // val view = LocalView.current
22
21
  val navController = LocalNavController.current
23
22
  Text(
24
23
  modifier = Modifier.padding(bottom = 12.dp),
composeApp/src/iosMain/kotlin/dev/pyrossh/only_bible_app/Platform.ios.kt CHANGED
@@ -5,6 +5,7 @@ import androidx.compose.ui.ExperimentalComposeUiApi
5
5
  import androidx.compose.ui.platform.LocalWindowInfo
6
6
  import androidx.compose.ui.unit.Dp
7
7
  import androidx.compose.ui.unit.dp
8
+ import dev.pyrossh.only_bible_app.config.BuildKonfig
8
9
  import dev.pyrossh.only_bible_app.domain.Verse
9
10
  import platform.UIKit.UIScreen
10
11
  //import platform.AVKit.Audio
@@ -26,4 +27,18 @@ actual fun playClickSound() {
26
27
  }
27
28
 
28
29
  actual fun shareVerses(verses: List<Verse>) {
30
+ }
31
+
32
+ actual object SpeechService {
33
+ actual fun init(onStarted: () -> Unit, onEnded: () -> Unit) {
34
+ }
35
+
36
+ actual fun dispose(onStarted: () -> Unit, onEnded: () -> Unit) {
37
+ }
38
+
39
+ actual fun startTextToSpeech(voiceName: String, text: String) {
40
+ }
41
+
42
+ actual fun stopTextToSpeech() {
43
+ }
29
44
  }