Skip to content

Commit ccbd350

Browse files
committed
Add repo branch option
1 parent 2d5a164 commit ccbd350

File tree

6 files changed

+43
-16
lines changed

6 files changed

+43
-16
lines changed

app/src/main/java/com/paulcoding/hviewer/network/Github.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.paulcoding.hviewer.network
33
import com.google.gson.Gson
44
import com.paulcoding.hviewer.MainApp.Companion.appContext
55
import com.paulcoding.hviewer.R
6-
import com.paulcoding.hviewer.helper.alsoLog
76
import com.paulcoding.hviewer.helper.extractTarGzFromResponseBody
87
import com.paulcoding.hviewer.helper.log
98
import com.paulcoding.hviewer.helper.readConfigFile
@@ -55,11 +54,12 @@ object Github {
5554

5655
private suspend fun getRemoteVersion(): Int {
5756
val repoUrl = Preferences.getRemote()
57+
val branch = Preferences.branch
5858

5959
val (owner, repo) = parseRepo(repoUrl)
6060

6161
val configUrl =
62-
"https://raw.githubusercontent.com/$owner/$repo/refs/heads/main/config.json?v=1"
62+
"https://raw.githubusercontent.com/$owner/$repo/refs/heads/$branch/config.json?v=1"
6363

6464
ktorClient.use { client ->
6565
val response = client.get(configUrl)
@@ -73,11 +73,12 @@ object Github {
7373

7474
private suspend fun downloadAndGetConfig() {
7575
val repoUrl = Preferences.getRemote()
76+
val branch = Preferences.branch
7677

7778
val (owner, repo) = parseRepo(repoUrl)
7879

7980
val tarUrl =
80-
"https://api.github.com/repos/$owner/$repo/tarball".alsoLog("tarUrl")
81+
"https://api.github.com/repos/$owner/$repo/tarball/$branch"
8182

8283
ktorClient.use { client ->
8384
val inputStream = client.get(tarUrl).readRawBytes().inputStream()

app/src/main/java/com/paulcoding/hviewer/preference/MMKV.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.tencent.mmkv.MMKV
44

55

66
const val REMOTE_URL = "remote_url"
7+
const val BRANCH = "branch"
78
const val SECURE_SCREEN = "secure_screen"
89
const val PIN = "pin"
910
const val PIN_COUNT = "pin_count"
@@ -18,6 +19,12 @@ object Preferences {
1819
kv.putString(REMOTE_URL, url)
1920
}
2021

22+
var branch: String
23+
get() = kv.getString(BRANCH, "main")!!
24+
set(value) {
25+
kv.putString(BRANCH, value)
26+
}
27+
2128
var secureScreen: Boolean
2229
get() = kv.getBoolean(SECURE_SCREEN, true)
2330
set(value) {

app/src/main/java/com/paulcoding/hviewer/ui/component/ConfirmDialog.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.paulcoding.hviewer.ui.component
22

33
import androidx.compose.material3.AlertDialog
4+
import androidx.compose.material3.MaterialTheme
45
import androidx.compose.material3.Text
56
import androidx.compose.material3.TextButton
67
import androidx.compose.runtime.Composable
7-
import androidx.compose.ui.graphics.Color
88
import androidx.compose.ui.res.stringResource
99
import com.paulcoding.hviewer.R
1010

@@ -24,12 +24,15 @@ fun ConfirmDialog(
2424
text = { Text(text = text) },
2525
confirmButton = {
2626
TextButton(onClick = { onConfirm() }) {
27-
Text(stringResource(R.string.confirm))
27+
Text(
28+
stringResource(R.string.confirm),
29+
color = MaterialTheme.colorScheme.primary
30+
)
2831
}
2932
},
3033
dismissButton = {
3134
TextButton(onClick = { onDismiss() }) {
32-
Text(stringResource(R.string.cancel), color = Color.Red)
35+
Text(stringResource(R.string.cancel), color = MaterialTheme.colorScheme.error)
3336
}
3437
}
3538
)

app/src/main/java/com/paulcoding/hviewer/ui/page/settings/InputRemoteModal.kt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,12 @@ import com.paulcoding.hviewer.network.Github
4444
@Composable
4545
fun InputRemoteModal(
4646
initialText: String = "",
47+
initialBranch: String = "main",
4748
setVisible: (Boolean) -> Unit,
48-
onSubmit: (url: String) -> Unit
49+
onSubmit: (String, String) -> Unit
4950
) {
5051
var textFieldValue by remember { mutableStateOf(TextFieldValue(initialText)) }
52+
var branch by remember { mutableStateOf(initialBranch) }
5153
val focusRequester = remember { FocusRequester() }
5254

5355
fun submit() {
@@ -56,7 +58,7 @@ fun InputRemoteModal(
5658
return makeToast(R.string.invalid_repo)
5759
} else {
5860
setVisible(false)
59-
onSubmit(textFieldValue.text)
61+
onSubmit(textFieldValue.text, branch)
6062
}
6163
}
6264

@@ -102,20 +104,28 @@ fun InputRemoteModal(
102104
label = { Text(stringResource(R.string.remote_url)) },
103105
keyboardOptions = KeyboardOptions(
104106
keyboardType = KeyboardType.Text,
105-
imeAction = ImeAction.Send
107+
imeAction = ImeAction.Go
106108
),
107109
keyboardActions = KeyboardActions(
108-
onSend = { submit() }
110+
onGo = { submit() }
109111
),
110-
placeholder = { Text("https://github.com/paulcoding810/h-viewer-scripts") }
112+
placeholder = { Text(stringResource(R.string.h_viewer_scripts_url)) }
111113
)
114+
OutlinedTextField(value = branch, onValueChange = { branch = it }, label = {
115+
Text(
116+
stringResource(R.string.branch)
117+
)
118+
})
112119
Row(
113120
modifier = Modifier.fillMaxWidth(),
114121
verticalAlignment = Alignment.CenterVertically,
115122
horizontalArrangement = Arrangement.End
116123
) {
117124
TextButton(onClick = { dismiss() }) {
118-
Text("Cancel", color = MaterialTheme.colorScheme.error)
125+
Text(
126+
stringResource(R.string.cancel),
127+
color = MaterialTheme.colorScheme.error
128+
)
119129
}
120130
Spacer(modifier = Modifier.width(12.dp))
121131
TextButton(onClick = { submit() }) {

app/src/main/java/com/paulcoding/hviewer/ui/page/settings/SettingsPage.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,14 @@ fun SettingsPage(
153153
}
154154
}
155155

156-
if (modalVisible) InputRemoteModal(initialText = Preferences.getRemote(), setVisible = {
157-
modalVisible = it
158-
}) {
159-
appViewModel.checkVersionOrUpdate(it, onUpdate = { state ->
156+
if (modalVisible) InputRemoteModal(
157+
initialText = Preferences.getRemote(),
158+
initialBranch = Preferences.branch,
159+
setVisible = {
160+
modalVisible = it
161+
}) { repo, branch ->
162+
Preferences.branch = branch
163+
appViewModel.checkVersionOrUpdate(repo, onUpdate = { state ->
160164
makeToast(state.getToastMessage())
161165
goBack()
162166
})

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,6 @@
4343
<string name="scripts_installed">Scripts Installed</string>
4444
<string name="from_repo_">From repo %1$s</string>
4545
<string name="up_to_Date">Up to date</string>
46+
<string name="h_viewer_scripts_url">https://github.com/paulcoding810/h-viewer-scripts</string>
47+
<string name="branch">Branch</string>
4648
</resources>

0 commit comments

Comments
 (0)