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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ local.properties
/.idea
*.jks
signing.properties
secret.properties

build/
*/Podfile.lock
Expand Down
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ dependencies {
implementation(projects.social.misskey)
implementation(projects.social.nostr)
implementation(projects.social.pixiv)
implementation(projects.social.tumblr)
implementation(projects.social.vvo)
implementation(projects.social.xqt)
implementation(projects.feature.login)
Expand Down Expand Up @@ -245,4 +246,3 @@ kotlin {
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import dev.dimension.flare.data.platform.MisskeyPlatformSpec
import dev.dimension.flare.data.platform.NostrPlatformSpec
import dev.dimension.flare.data.platform.PixivPlatformSpec
import dev.dimension.flare.data.platform.RssTimelineSpecs
import dev.dimension.flare.data.platform.TumblrPlatformSpec
import dev.dimension.flare.data.platform.VvoPlatformSpec
import dev.dimension.flare.data.platform.XqtPlatformSpec
import dev.dimension.flare.model.PlatformRuntimeData
Expand Down Expand Up @@ -36,6 +37,7 @@ internal fun runtimeData(allRssTimelineLoaderFactory: AllRssTimelineLoaderFactor
BlueskyPlatformSpec,
FanboxPlatformSpec,
PixivPlatformSpec,
TumblrPlatformSpec,
XqtPlatformSpec,
VvoPlatformSpec,
),
Expand Down
2 changes: 2 additions & 0 deletions apple-shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ kotlin {
projects.social.mastodon,
projects.social.misskey,
projects.social.pixiv,
projects.social.tumblr,
projects.social.vvo,
projects.social.xqt,
projects.feature.loginApi,
Expand Down Expand Up @@ -67,6 +68,7 @@ kotlin {
api(projects.social.mastodon)
api(projects.social.misskey)
api(projects.social.pixiv)
api(projects.social.tumblr)
api(projects.social.vvo)
api(projects.social.xqt)
api(projects.feature.loginApi)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import dev.dimension.flare.data.platform.MastodonPlatformSpec
import dev.dimension.flare.data.platform.MisskeyPlatformSpec
import dev.dimension.flare.data.platform.NostrPlatformSpec
import dev.dimension.flare.data.platform.PixivPlatformSpec
import dev.dimension.flare.data.platform.TumblrPlatformSpec
import dev.dimension.flare.data.platform.VvoPlatformSpec
import dev.dimension.flare.data.platform.XqtPlatformSpec
import dev.dimension.flare.model.PlatformSpec
Expand All @@ -18,6 +19,7 @@ internal actual fun platformSpecs(): List<PlatformSpec> =
BlueskyPlatformSpec,
FanboxPlatformSpec,
PixivPlatformSpec,
TumblrPlatformSpec,
XqtPlatformSpec,
VvoPlatformSpec,
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dev.dimension.flare.data.platform.FanboxPlatformSpec
import dev.dimension.flare.data.platform.MastodonPlatformSpec
import dev.dimension.flare.data.platform.MisskeyPlatformSpec
import dev.dimension.flare.data.platform.PixivPlatformSpec
import dev.dimension.flare.data.platform.TumblrPlatformSpec
import dev.dimension.flare.data.platform.VvoPlatformSpec
import dev.dimension.flare.data.platform.XqtPlatformSpec
import dev.dimension.flare.model.PlatformSpec
Expand All @@ -16,6 +17,7 @@ internal actual fun platformSpecs(): List<PlatformSpec> =
BlueskyPlatformSpec,
FanboxPlatformSpec,
PixivPlatformSpec,
TumblrPlatformSpec,
XqtPlatformSpec,
VvoPlatformSpec,
)
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,8 @@ public extension UiIcon {
.pixiv
case .fanbox:
.pixiv
case .tumblr:
.squareRss
case .list:
.list
case .feeds, .rss:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,10 @@ public struct StatusView: View {
Image(fontAwesome: .pixiv)
.font(.caption)
.foregroundStyle(.secondary)
case .tumblr:
Image(fontAwesome: .squareRss)
.font(.caption)
.foregroundStyle(.secondary)
}
}
if !isDetail {
Expand Down
2 changes: 2 additions & 0 deletions appleApp/ios/UI/Screen/ComposeScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -696,6 +696,8 @@ private extension UiProfile {
return .pixiv
case .fanbox:
return .fanbox
case .tumblr:
return .tumblr
case .xQt:
return .x
case .vvo:
Expand Down
2 changes: 2 additions & 0 deletions appleApp/ios/UI/Screen/ServiceSelectionScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,8 @@ struct ServiceSelectionScreen: View {
return "Pixiv"
case .fanbox:
return "FANBOX"
case .tumblr:
return "Tumblr"
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions appleApp/macos/UI/Screen/MacComposeScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1245,6 +1245,8 @@ private extension UiProfile {
return .pixiv
case .fanbox:
return .fanbox
case .tumblr:
return .tumblr
case .xQt:
return .x
case .vvo:
Expand Down
2 changes: 2 additions & 0 deletions appleApp/macos/UI/Screen/ServiceSelectionScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,8 @@ struct ServiceSelectionScreen: View {
return "Pixiv"
case .fanbox:
return "Fanbox"
case .tumblr:
return "Tumblr"
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import compose.icons.fontawesomeicons.Solid
import compose.icons.fontawesomeicons.brands.Bluesky
import compose.icons.fontawesomeicons.brands.Mastodon
import compose.icons.fontawesomeicons.brands.Pixiv
import compose.icons.fontawesomeicons.brands.Tumblr
import compose.icons.fontawesomeicons.brands.Twitter
import compose.icons.fontawesomeicons.brands.Weibo
import compose.icons.fontawesomeicons.brands.XTwitter
Expand Down Expand Up @@ -103,6 +104,7 @@ public fun UiIcon.toImageVector(): ImageVector =
UiIcon.Bluesky -> FontAwesomeIcons.Brands.Bluesky
UiIcon.Pixiv -> FontAwesomeIcons.Brands.Pixiv
UiIcon.Fanbox -> FontAwesomeIcons.Brands.Pixiv
UiIcon.Tumblr -> FontAwesomeIcons.Brands.Tumblr
UiIcon.Nostr -> FontAwesomeIcons.Brands.Nostr
UiIcon.Twitter -> FontAwesomeIcons.Brands.Twitter
UiIcon.X -> FontAwesomeIcons.Brands.XTwitter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import compose.icons.fontawesomeicons.brands.Bluesky
import compose.icons.fontawesomeicons.brands.Mastodon
import compose.icons.fontawesomeicons.brands.Pix
import compose.icons.fontawesomeicons.brands.Pixiv
import compose.icons.fontawesomeicons.brands.Tumblr
import compose.icons.fontawesomeicons.brands.Weibo
import compose.icons.fontawesomeicons.brands.XTwitter
import compose.icons.fontawesomeicons.solid.Image
Expand All @@ -24,6 +25,7 @@ public val PlatformType.brandIcon: ImageVector
PlatformType.Bluesky -> FontAwesomeIcons.Brands.Bluesky
PlatformType.Pixiv -> FontAwesomeIcons.Brands.Pixiv
PlatformType.Fanbox -> FontAwesomeIcons.Brands.Pixiv
PlatformType.Tumblr -> FontAwesomeIcons.Brands.Tumblr
PlatformType.xQt -> FontAwesomeIcons.Brands.XTwitter
PlatformType.VVo -> FontAwesomeIcons.Brands.Weibo
}
1 change: 1 addition & 0 deletions desktopApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dependencies {
implementation(projects.social.misskey)
implementation(projects.social.nostr)
implementation(projects.social.pixiv)
implementation(projects.social.tumblr)
implementation(projects.social.vvo)
implementation(projects.social.xqt)
implementation(projects.feature.login)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import dev.dimension.flare.data.platform.MisskeyPlatformSpec
import dev.dimension.flare.data.platform.NostrPlatformSpec
import dev.dimension.flare.data.platform.PixivPlatformSpec
import dev.dimension.flare.data.platform.RssTimelineSpecs
import dev.dimension.flare.data.platform.TumblrPlatformSpec
import dev.dimension.flare.data.platform.VvoPlatformSpec
import dev.dimension.flare.data.platform.XqtPlatformSpec
import dev.dimension.flare.model.PlatformRuntimeData
Expand Down Expand Up @@ -36,6 +37,7 @@ internal fun runtimeData(allRssTimelineLoaderFactory: AllRssTimelineLoaderFactor
BlueskyPlatformSpec,
FanboxPlatformSpec,
PixivPlatformSpec,
TumblrPlatformSpec,
XqtPlatformSpec,
VvoPlatformSpec,
),
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ include(":social:mastodon")
include(":social:misskey")
include(":social:nostr")
include(":social:pixiv")
include(":social:tumblr")
include(":social:vvo")
include(":social:xqt")
include(":feature:login-api")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package dev.dimension.flare.common

internal actual object BuildConfig {
actual val debug: Boolean
get() = false
get() = true
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ 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.pixivBookmark
import dev.dimension.flare.ui.model.mapper.tumblrLike
import dev.dimension.flare.ui.model.mapper.tumblrRepost
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 @@ -473,6 +475,43 @@ public sealed interface PostEvent {
)
}
}

@Serializable
public sealed interface Tumblr : PostEvent {
@Serializable
public data class Like(
public override val postKey: MicroBlogKey,
public val liked: Boolean,
public val count: Long = 0,
public val accountKey: MicroBlogKey,
) : Tumblr,
UpdatePostActionMenuEvent {
public override fun nextActionMenu(): ActionMenu.Item =
ActionMenu.tumblrLike(
statusKey = postKey,
liked = !liked,
count = (count + if (!liked) 1 else -1).coerceAtLeast(0),
accountKey = accountKey,
)
}

@Serializable
public data class Repost(
public override val postKey: MicroBlogKey,
public val reposted: Boolean,
public val count: Long = 0,
public val accountKey: MicroBlogKey,
) : Tumblr,
UpdatePostActionMenuEvent {
public override fun nextActionMenu(): ActionMenu.Item =
ActionMenu.tumblrRepost(
statusKey = postKey,
reposted = !reposted,
count = (count + if (!reposted) 1 else -1).coerceAtLeast(0),
accountKey = accountKey,
)
}
}
}

@HiddenFromObjC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public enum class PlatformType {
VVo,
Nostr,
Fanbox,
Tumblr,
}

@Immutable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public enum class UiIcon {
UnFavourite,
Pixiv,
Fanbox,
Tumblr,
}

/**
Expand All @@ -81,6 +82,7 @@ public val TabPickerUiIcons: List<UiIcon> =
UiIcon.Misskey,
UiIcon.Bluesky,
UiIcon.Pixiv,
UiIcon.Tumblr,
UiIcon.Weibo,
UiIcon.Nostr,
UiIcon.X,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package dev.dimension.flare.ui.model.mapper

import dev.dimension.flare.data.datasource.microblog.ActionMenu
import dev.dimension.flare.data.datasource.microblog.PostActionFamily
import dev.dimension.flare.data.datasource.microblog.PostEvent
import dev.dimension.flare.model.MicroBlogKey
import dev.dimension.flare.ui.model.ClickEvent
import dev.dimension.flare.ui.model.UiIcon
import dev.dimension.flare.ui.model.UiNumber

public fun ActionMenu.Companion.tumblrLike(
statusKey: MicroBlogKey,
liked: Boolean,
count: Long,
accountKey: MicroBlogKey,
): ActionMenu.Item =
ActionMenu.Item(
updateKey = "tumblr_like_$statusKey",
icon = if (liked) UiIcon.Unlike else UiIcon.Like,
text =
ActionMenu.Item.Text.Localized(
if (liked) {
ActionMenu.Item.Text.Localized.Type.Unlike
} else {
ActionMenu.Item.Text.Localized.Type.Like
},
),
count = UiNumber(count),
color = if (liked) ActionMenu.Item.Color.Red else null,
clickEvent =
ClickEvent.event(
accountKey,
PostEvent.Tumblr.Like(
postKey = statusKey,
liked = liked,
count = count,
accountKey = accountKey,
),
),
actionFamily = PostActionFamily.Like,
)

public fun ActionMenu.Companion.tumblrRepost(
statusKey: MicroBlogKey,
reposted: Boolean,
count: Long,
accountKey: MicroBlogKey,
): ActionMenu.Item =
ActionMenu.Item(
updateKey = "tumblr_repost_$statusKey",
icon = if (reposted) UiIcon.Unretweet else UiIcon.Retweet,
text =
ActionMenu.Item.Text.Localized(
if (reposted) {
ActionMenu.Item.Text.Localized.Type.Unretweet
} else {
ActionMenu.Item.Text.Localized.Type.Retweet
},
),
count = UiNumber(count),
color = if (reposted) ActionMenu.Item.Color.PrimaryColor else null,
clickEvent =
if (reposted) {
ClickEvent.Noop
} else {
ClickEvent.event(
accountKey,
PostEvent.Tumblr.Repost(
postKey = statusKey,
reposted = reposted,
count = count,
accountKey = accountKey,
),
)
},
actionFamily = PostActionFamily.Repost,
)
Loading
Loading