Skip to content

Commit 8cbec7f

Browse files
committed
⚡ Step 4: Tab previews, menu, find in page, desktop mode, release APK
1 parent d19dfb2 commit 8cbec7f

File tree

9 files changed

+506
-103
lines changed

9 files changed

+506
-103
lines changed

.github/workflows/build.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,19 @@ jobs:
2828
- name: Build Debug APK
2929
run: gradle assembleDebug
3030

31-
- name: Upload APK
31+
- name: Build Release APK
32+
run: gradle assembleRelease
33+
34+
- name: Upload Debug APK
3235
uses: actions/upload-artifact@v4
3336
with:
3437
name: blinker-debug
3538
path: app/build/outputs/apk/debug/*.apk
3639
retention-days: 30
40+
41+
- name: Upload Release APK
42+
uses: actions/upload-artifact@v4
43+
with:
44+
name: blinker-release
45+
path: app/build/outputs/apk/release/*.apk
46+
retention-days: 30

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ android {
2020
release {
2121
isMinifyEnabled = true
2222
isShrinkResources = true
23+
signingConfig = signingConfigs.getByName("debug")
2324
proguardFiles(
2425
getDefaultProguardFile("proguard-android-optimize.txt"),
2526
"proguard-rules.pro"

app/src/main/java/blinker/go/ui/browser/AddressBar.kt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ import androidx.compose.foundation.text.BasicTextField
1818
import androidx.compose.foundation.text.KeyboardActions
1919
import androidx.compose.foundation.text.KeyboardOptions
2020
import androidx.compose.material.icons.Icons
21+
import androidx.compose.material.icons.rounded.Close
2122
import androidx.compose.material.icons.rounded.Lock
2223
import androidx.compose.material.icons.rounded.LockOpen
24+
import androidx.compose.material.icons.rounded.Refresh
2325
import androidx.compose.material3.Icon
26+
import androidx.compose.material3.IconButton
2427
import androidx.compose.material3.LinearProgressIndicator
2528
import androidx.compose.material3.MaterialTheme
2629
import androidx.compose.material3.Text
@@ -48,16 +51,15 @@ fun AddressBar(
4851
isLoading: Boolean,
4952
progress: Int,
5053
onUrlSubmit: (String) -> Unit,
54+
onRefreshOrStop: () -> Unit,
5155
modifier: Modifier = Modifier
5256
) {
5357
var text by remember { mutableStateOf(url) }
5458
var isFocused by remember { mutableStateOf(false) }
5559
val focusManager = LocalFocusManager.current
5660

5761
LaunchedEffect(url) {
58-
if (!isFocused) {
59-
text = url
60-
}
62+
if (!isFocused) text = url
6163
}
6264

6365
Column(
@@ -126,6 +128,21 @@ fun AddressBar(
126128
)
127129
}
128130
}
131+
132+
Spacer(modifier = Modifier.width(4.dp))
133+
134+
IconButton(
135+
onClick = onRefreshOrStop,
136+
modifier = Modifier.size(36.dp)
137+
) {
138+
Icon(
139+
imageVector = if (isLoading) Icons.Rounded.Close
140+
else Icons.Rounded.Refresh,
141+
contentDescription = if (isLoading) "Stop" else "Refresh",
142+
modifier = Modifier.size(18.dp),
143+
tint = MaterialTheme.colorScheme.onSurface
144+
)
145+
}
129146
}
130147

131148
if (isLoading && progress < 100) {

app/src/main/java/blinker/go/ui/browser/BottomNavBar.kt

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape
1313
import androidx.compose.material.icons.Icons
1414
import androidx.compose.material.icons.automirrored.rounded.ArrowBack
1515
import androidx.compose.material.icons.automirrored.rounded.ArrowForward
16-
import androidx.compose.material.icons.rounded.Close
1716
import androidx.compose.material.icons.rounded.Home
18-
import androidx.compose.material.icons.rounded.Refresh
17+
import androidx.compose.material.icons.rounded.MoreVert
1918
import androidx.compose.material3.Icon
2019
import androidx.compose.material3.IconButton
2120
import androidx.compose.material3.MaterialTheme
@@ -32,13 +31,12 @@ import androidx.compose.ui.unit.sp
3231
fun BottomNavBar(
3332
canGoBack: Boolean,
3433
canGoForward: Boolean,
35-
isLoading: Boolean,
3634
tabCount: Int,
3735
onBack: () -> Unit,
3836
onForward: () -> Unit,
3937
onHome: () -> Unit,
40-
onRefresh: () -> Unit,
4138
onShowTabs: () -> Unit,
39+
onShowMenu: () -> Unit,
4240
modifier: Modifier = Modifier
4341
) {
4442
Surface(
@@ -92,18 +90,6 @@ fun BottomNavBar(
9290
)
9391
}
9492

95-
IconButton(
96-
onClick = onRefresh,
97-
modifier = Modifier.weight(1f)
98-
) {
99-
Icon(
100-
imageVector = if (isLoading) Icons.Rounded.Close
101-
else Icons.Rounded.Refresh,
102-
contentDescription = if (isLoading) "Stop" else "Refresh",
103-
tint = MaterialTheme.colorScheme.onSurface
104-
)
105-
}
106-
10793
IconButton(
10894
onClick = onShowTabs,
10995
modifier = Modifier.weight(1f)
@@ -128,6 +114,17 @@ fun BottomNavBar(
128114
)
129115
}
130116
}
117+
118+
IconButton(
119+
onClick = onShowMenu,
120+
modifier = Modifier.weight(1f)
121+
) {
122+
Icon(
123+
imageVector = Icons.Rounded.MoreVert,
124+
contentDescription = "Menu",
125+
tint = MaterialTheme.colorScheme.onSurface
126+
)
127+
}
131128
}
132129
}
133130
}

0 commit comments

Comments
 (0)