Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import compose.icons.fontawesomeicons.Regular
import compose.icons.fontawesomeicons.Solid
import compose.icons.fontawesomeicons.brands.Bluesky
import compose.icons.fontawesomeicons.brands.Mastodon
import compose.icons.fontawesomeicons.brands.Tumblr
import compose.icons.fontawesomeicons.brands.Weibo
import compose.icons.fontawesomeicons.brands.XTwitter
import compose.icons.fontawesomeicons.regular.Bookmark
Expand Down Expand Up @@ -95,6 +96,7 @@ public fun UiIcon.toImageVector(): ImageVector =
UiIcon.Mastodon -> FontAwesomeIcons.Brands.Mastodon
UiIcon.Misskey -> FontAwesomeIcons.Brands.Misskey
UiIcon.Bluesky -> FontAwesomeIcons.Brands.Bluesky
UiIcon.Tumblr -> FontAwesomeIcons.Brands.Tumblr
UiIcon.Nostr -> FontAwesomeIcons.Brands.Nostr
UiIcon.Twitter -> FontAwesomeIcons.Brands.XTwitter
UiIcon.X -> FontAwesomeIcons.Brands.XTwitter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import compose.icons.FontAwesomeIcons
import compose.icons.fontawesomeicons.Brands
import compose.icons.fontawesomeicons.brands.Bluesky
import compose.icons.fontawesomeicons.brands.Mastodon
import compose.icons.fontawesomeicons.brands.Tumblr
import compose.icons.fontawesomeicons.brands.Weibo
import compose.icons.fontawesomeicons.brands.XTwitter
import dev.dimension.flare.model.PlatformType
Expand All @@ -18,6 +19,7 @@ public val PlatformType.brandIcon: ImageVector
PlatformType.Mastodon -> FontAwesomeIcons.Brands.Mastodon
PlatformType.Misskey -> FontAwesomeIcons.Brands.Misskey
PlatformType.Bluesky -> FontAwesomeIcons.Brands.Bluesky
PlatformType.Tumblr -> FontAwesomeIcons.Brands.Tumblr
PlatformType.xQt -> FontAwesomeIcons.Brands.XTwitter
PlatformType.VVo -> FontAwesomeIcons.Brands.Weibo
}
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,38 @@ public fun ServiceSelectionScreenContent(
}
}

PlatformType.Tumblr -> {
registerDeeplinkCallback {
state.tumblrLoginState.resume(it)
}
state.tumblrLoginState.resumedState
?.onLoading {
PlatformText(
text = stringResource(Res.string.mastodon_login_verify_message),
)
PlatformLinearProgressIndicator()
}?.onError {
PlatformText(text = it.message ?: "Unknown error")
} ?: run {
PlatformFilledTonalButton(
onClick = {
state.tumblrLoginState.login(
launchUrl = openUri,
)
},
modifier = Modifier.width(300.dp),
enabled = !state.tumblrLoginState.loading,
) {
PlatformText(
text = stringResource(Res.string.service_select_next_button),
)
}
state.tumblrLoginState.error?.let {
PlatformText(text = it)
}
}
}

PlatformType.Misskey -> {
registerDeeplinkCallback {
state.misskeyLoginState.resume(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import dev.dimension.flare.ui.model.mapper.misskeyReact
import dev.dimension.flare.ui.model.mapper.misskeyRenote
import dev.dimension.flare.ui.model.mapper.nostrLike
import dev.dimension.flare.ui.model.mapper.nostrRepost
import dev.dimension.flare.ui.model.mapper.tumblrLike
import dev.dimension.flare.ui.model.mapper.tumblrReblog
import dev.dimension.flare.ui.model.mapper.vvoFavorite
import dev.dimension.flare.ui.model.mapper.vvoLike
import dev.dimension.flare.ui.model.mapper.vvoLikeComment
Expand Down Expand Up @@ -429,6 +431,38 @@ internal sealed interface PostEvent {
val accountKey: MicroBlogKey,
) : Nostr
}

@Serializable
sealed interface Tumblr : PostEvent {
@Serializable
data class Like(
override val postKey: MicroBlogKey,
val liked: Boolean,
val accountKey: MicroBlogKey,
) : Tumblr,
UpdatePostActionMenuEvent {
override fun nextActionMenu(): ActionMenu.Item =
ActionMenu.tumblrLike(
statusKey = postKey,
liked = !liked,
accountKey = accountKey,
)
}

@Serializable
data class Reblog(
override val postKey: MicroBlogKey,
val canReblog: Boolean,
val accountKey: MicroBlogKey,
) : Tumblr {
fun nextActionMenu(): ActionMenu.Item =
ActionMenu.tumblrReblog(
statusKey = postKey,
canReblog = false,
accountKey = accountKey,
)
}
}
}

internal interface UpdatePostActionMenuEvent : PostEvent {
Expand Down
Loading
Loading