Skip to content

Commit b3fb274

Browse files
authored
Merge pull request #1113 from DimensionDev/feature/expired_display
add account key display for login expired
2 parents 82ae0c9 + 2751d0d commit b3fb274

22 files changed

Lines changed: 149 additions & 40 deletions

app/src/main/java/dev/dimension/flare/ui/component/ThemedIcon.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.compose.ui.Alignment
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.graphics.Color
1313
import androidx.compose.ui.graphics.vector.ImageVector
14+
import androidx.compose.ui.unit.Dp
1415
import androidx.compose.ui.unit.dp
1516
import dev.dimension.flare.ui.theme.isLight
1617
import kotlinx.collections.immutable.persistentMapOf
@@ -154,6 +155,7 @@ internal fun ThemedIcon(
154155
contentDescription: String?,
155156
color: ThemeIconData.Color,
156157
modifier: Modifier = Modifier,
158+
size: Dp = 40.dp,
157159
) {
158160
val isLight = MaterialTheme.colorScheme.isLight()
159161
val theme =
@@ -170,7 +172,7 @@ internal fun ThemedIcon(
170172
modifier =
171173
modifier
172174
.background(theme.backgroundColor, shape = CircleShape)
173-
.size(40.dp),
175+
.size(size),
174176
contentAlignment = Alignment.Center,
175177
) {
176178
FAIcon(

app/src/main/java/dev/dimension/flare/ui/screen/home/TabSettingScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ internal fun TabSettingScreen(
160160
}
161161
}
162162
item {
163-
Spacer(modifier = Modifier.height(6.dp))
163+
Spacer(modifier = Modifier.height(12.dp))
164164
}
165165
itemsIndexed(state.currentTabs, key = { _, item -> item.key }) { index, item ->
166166
TabCustomItem(

app/src/main/java/dev/dimension/flare/ui/screen/list/EditListMemberScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ internal fun EditListMemberScreen(
115115
)
116116
}
117117
item {
118-
Spacer(modifier = Modifier.height(6.dp))
118+
Spacer(modifier = Modifier.height(12.dp))
119119
}
120120
state.users
121121
.onSuccess {

app/src/main/java/dev/dimension/flare/ui/screen/settings/AccountsScreen.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Arrangement
77
import androidx.compose.foundation.layout.Box
88
import androidx.compose.foundation.layout.fillMaxSize
99
import androidx.compose.foundation.layout.padding
10-
import androidx.compose.foundation.layout.size
1110
import androidx.compose.foundation.lazy.LazyColumn
1211
import androidx.compose.foundation.shape.CircleShape
1312
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -36,7 +35,7 @@ import androidx.compose.ui.unit.Dp
3635
import androidx.compose.ui.unit.dp
3736
import compose.icons.FontAwesomeIcons
3837
import compose.icons.fontawesomeicons.Solid
39-
import compose.icons.fontawesomeicons.solid.FileCircleExclamation
38+
import compose.icons.fontawesomeicons.solid.FaceSadTear
4039
import compose.icons.fontawesomeicons.solid.Plus
4140
import dev.dimension.flare.R
4241
import dev.dimension.flare.data.model.TabSettings
@@ -51,6 +50,8 @@ import dev.dimension.flare.ui.component.FAIcon
5150
import dev.dimension.flare.ui.component.FlareLargeFlexibleTopAppBar
5251
import dev.dimension.flare.ui.component.FlareScaffold
5352
import dev.dimension.flare.ui.component.RichText
53+
import dev.dimension.flare.ui.component.ThemeIconData
54+
import dev.dimension.flare.ui.component.ThemedIcon
5455
import dev.dimension.flare.ui.component.listCard
5556
import dev.dimension.flare.ui.model.UiState
5657
import dev.dimension.flare.ui.model.UiUserV2
@@ -263,22 +264,23 @@ fun <T : UiUserV2> AccountItem(
263264
ListItem(
264265
headlineContent = {
265266
if (throwable is LoginExpiredException) {
266-
Text(text = stringResource(id = R.string.login_expired))
267+
Text(text = stringResource(id = R.string.login_expired, throwable.accountKey.toString()))
267268
} else {
268269
Text(text = stringResource(id = R.string.account_item_error_title))
269270
}
270271
},
271272
modifier = modifier,
272273
leadingContent = {
273-
FAIcon(
274-
FontAwesomeIcons.Solid.FileCircleExclamation,
274+
ThemedIcon(
275+
FontAwesomeIcons.Solid.FaceSadTear,
275276
contentDescription = stringResource(id = R.string.account_item_error_title),
276-
modifier = Modifier.size(avatarSize),
277+
color = ThemeIconData.Color.ImperialMagenta,
278+
size = avatarSize,
277279
)
278280
},
279281
supportingContent = {
280282
if (throwable is LoginExpiredException) {
281-
Text(text = stringResource(id = R.string.login_expired_message))
283+
Text(text = throwable.accountKey.toString())
282284
} else {
283285
Text(text = stringResource(id = R.string.account_item_error_message))
284286
}

app/src/main/java/dev/dimension/flare/ui/screen/settings/AppLoggingScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ internal fun AppLoggingScreen(onBack: () -> Unit) {
130130
)
131131
}
132132
item {
133-
Spacer(modifier = Modifier.height(6.dp))
133+
Spacer(modifier = Modifier.height(12.dp))
134134
}
135135
itemsIndexed(state.messages) { index, it ->
136136
ListItem(

shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/bluesky/HomeTimelineRemoteMediator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import dev.dimension.flare.data.database.cache.model.DbPagingTimelineWithStatus
1313
import dev.dimension.flare.data.network.bluesky.BlueskyService
1414
import dev.dimension.flare.data.repository.LoginExpiredException
1515
import dev.dimension.flare.model.MicroBlogKey
16+
import dev.dimension.flare.model.PlatformType
1617

1718
@OptIn(ExperimentalPagingApi::class)
1819
internal class HomeTimelineRemoteMediator(
@@ -74,7 +75,10 @@ internal class HomeTimelineRemoteMediator(
7475
if (e is LoginExpiredException) {
7576
inAppNotification.onError(
7677
Message.LoginExpired,
77-
LoginExpiredException,
78+
LoginExpiredException(
79+
accountKey = accountKey,
80+
platformType = PlatformType.Bluesky,
81+
),
7882
)
7983
}
8084
}

shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/vvo/CommentChildRemoteMediator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import dev.dimension.flare.data.database.cache.model.DbPagingTimelineWithStatus
1010
import dev.dimension.flare.data.network.vvo.VVOService
1111
import dev.dimension.flare.data.repository.LoginExpiredException
1212
import dev.dimension.flare.model.MicroBlogKey
13+
import dev.dimension.flare.model.PlatformType
1314

1415
@OptIn(ExperimentalPagingApi::class)
1516
internal class CommentChildRemoteMediator(
@@ -30,7 +31,10 @@ internal class CommentChildRemoteMediator(
3031
): Result {
3132
val config = service.config()
3233
if (config.data?.login != true) {
33-
throw LoginExpiredException
34+
throw LoginExpiredException(
35+
accountKey = accountKey,
36+
platformType = PlatformType.VVo,
37+
)
3438
}
3539

3640
val response =

shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/vvo/CommentPagingSource.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import dev.dimension.flare.data.datasource.microblog.StatusEvent
66
import dev.dimension.flare.data.network.vvo.VVOService
77
import dev.dimension.flare.data.repository.LoginExpiredException
88
import dev.dimension.flare.model.MicroBlogKey
9+
import dev.dimension.flare.model.PlatformType
910
import dev.dimension.flare.ui.model.UiTimeline
1011
import dev.dimension.flare.ui.model.mapper.render
1112

@@ -19,7 +20,10 @@ internal class CommentPagingSource(
1920
val config = service.config()
2021
if (config.data?.login != true) {
2122
return LoadResult.Error(
22-
LoginExpiredException,
23+
LoginExpiredException(
24+
accountKey = accountKey,
25+
platformType = PlatformType.VVo,
26+
),
2327
)
2428
}
2529
if (params.key == null) {

shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/vvo/DiscoverStatusRemoteMediator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import dev.dimension.flare.data.database.cache.model.DbPagingTimelineWithStatus
1010
import dev.dimension.flare.data.network.vvo.VVOService
1111
import dev.dimension.flare.data.repository.LoginExpiredException
1212
import dev.dimension.flare.model.MicroBlogKey
13+
import dev.dimension.flare.model.PlatformType
1314

1415
@OptIn(ExperimentalPagingApi::class)
1516
internal class DiscoverStatusRemoteMediator(
@@ -29,7 +30,10 @@ internal class DiscoverStatusRemoteMediator(
2930
): Result {
3031
val config = service.config()
3132
if (config.data?.login != true) {
32-
throw LoginExpiredException
33+
throw LoginExpiredException(
34+
accountKey = accountKey,
35+
platformType = PlatformType.VVo,
36+
)
3337
}
3438

3539
val response =

shared/src/commonMain/kotlin/dev/dimension/flare/data/datasource/vvo/HomeTimelineRemoteMediator.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import dev.dimension.flare.data.database.cache.model.DbPagingTimelineWithStatus
1212
import dev.dimension.flare.data.network.vvo.VVOService
1313
import dev.dimension.flare.data.repository.LoginExpiredException
1414
import dev.dimension.flare.model.MicroBlogKey
15+
import dev.dimension.flare.model.PlatformType
1516

1617
@OptIn(ExperimentalPagingApi::class)
1718
internal class HomeTimelineRemoteMediator(
@@ -34,9 +35,15 @@ internal class HomeTimelineRemoteMediator(
3435
if (config.data?.login != true) {
3536
inAppNotification.onError(
3637
Message.LoginExpired,
37-
LoginExpiredException,
38+
LoginExpiredException(
39+
accountKey = accountKey,
40+
platformType = PlatformType.VVo,
41+
),
42+
)
43+
throw LoginExpiredException(
44+
accountKey = accountKey,
45+
platformType = PlatformType.VVo,
3846
)
39-
throw LoginExpiredException
4047
}
4148

4249
val response =

0 commit comments

Comments
 (0)