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
Original file line number Diff line number Diff line change
Expand Up @@ -1587,6 +1587,10 @@ internal val UiTimelineV2.Post.Visibility.localName: Int
R.string.misskey_visibility_specified
}

UiTimelineV2.Post.Visibility.Private -> {
R.string.tumblr_visibility_private
}

UiTimelineV2.Post.Visibility.Channel -> {
R.string.misskey_visibility_public
}
Expand All @@ -1611,6 +1615,10 @@ internal val UiTimelineV2.Post.Visibility.localDescription: Int
R.string.misskey_visibility_specified_description
}

UiTimelineV2.Post.Visibility.Private -> {
R.string.tumblr_visibility_private_description
}

UiTimelineV2.Post.Visibility.Channel -> {
R.string.misskey_visibility_public_description
}
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@
<string name="misskey_visibility_home_description">仅此实例上的用户可以看到此动态</string>
<string name="misskey_visibility_followers_description">仅关注者可以看到此动态</string>
<string name="misskey_visibility_specified_description">仅提及的用户可以看到此动态</string>
<string name="tumblr_visibility_private">私密</string>
<string name="tumblr_visibility_private_description">不公开显示</string>
<string name="bluesky_login_username_hint">用户名</string>
<string name="bluesky_login_password_hint">密码</string>
<string name="bluesky_login_auth_factor_token_hint">2FA 验证码</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@
<string name="misskey_visibility_home_description">只有此站台上的使用者可以看到此貼文</string>
<string name="misskey_visibility_followers_description">只有追蹤者可以看到此貼文</string>
<string name="misskey_visibility_specified_description">只有被提及的使用者可以看到此貼文</string>
<string name="tumblr_visibility_private">私人</string>
<string name="tumblr_visibility_private_description">不公開顯示</string>
<string name="bluesky_login_username_hint">使用者名稱</string>
<string name="bluesky_login_password_hint">密碼</string>
<string name="bluesky_login_auth_factor_token_hint">2FA 驗證碼</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,8 @@
<string name="misskey_visibility_home_description">Only users on this instance can see this post</string>
<string name="misskey_visibility_followers_description">Only followers can see this post</string>
<string name="misskey_visibility_specified_description">Only mentioned users can see this post</string>
<string name="tumblr_visibility_private">Private</string>
<string name="tumblr_visibility_private_description">Not publicly visible</string>

<string name="bluesky_login_username_hint">Username</string>
<string name="bluesky_login_password_hint">Password</string>
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 @@ -90,6 +90,7 @@ public enum FontAwesomeIcon: String, CaseIterable, Hashable, Identifiable, Senda
case tableList = "table-list"
case telegram = "telegram"
case thumbtack = "thumbtack"
case tumblr = "tumblr"
case trash = "trash"
case tv = "tv"
case twitter = "twitter"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,8 @@ public extension UiIcon {
.pixiv
case .fanbox:
.pixiv
case .tumblr:
.tumblr
case .list:
.list
case .feeds, .rss:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ private extension UiTimelineV2.PostVisibility {
"status_visibility_specified"
case .channel:
"status_visibility_public"
case .private:
"tumblr_visibility_private"
}
}

Expand All @@ -297,6 +299,8 @@ private extension UiTimelineV2.PostVisibility {
"status_visibility_specified_description"
case .channel:
"status_visibility_public_description"
case .private:
"tumblr_visibility_private_description"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ public struct StatusView: View {
} else {
[data.content.original]
}
let shouldExpandTextByDefault = contentWarningIsEmpty && contents.reduce(0) { $0 + $1.innerText.count } <= 500
let poll = data.poll
let images = Array(data.images)
let hasImages = !images.isEmpty
Expand All @@ -133,13 +132,8 @@ public struct StatusView: View {
let accountType = data.accountType
let statusKey = data.statusKey
let effectiveLineLimit = max(maxLine ?? Int(appearanceLineLimit), 1)
let usesExplicitShortLineLimit = maxLine != nil && effectiveLineLimit < 5
let contentLineLimit: Int? =
if isDetail || ((shouldExpandTextByDefault || textExpanded) && !usesExplicitShortLineLimit) {
nil
} else {
effectiveLineLimit
}
let contentLineLimit: Int? = isDetail || textExpanded ? nil : effectiveLineLimit
let collapseThreshold = maxLine == nil ? 10 : effectiveLineLimit
let canExpandLineLimitedContent = contentLineLimit != nil && !isDetail && !textExpanded && showExpandTextButton

VStack(
Expand Down Expand Up @@ -271,6 +265,7 @@ public struct StatusView: View {
CollapsibleRichText(
text: content,
lineLimit: contentLineLimit,
collapseThreshold: collapseThreshold,
isExpanded: textExpanded,
isTextSelectionEnabled: isDetail
) { overflows in
Expand Down Expand Up @@ -476,6 +471,10 @@ public struct StatusView: View {
Image(fontAwesome: .pixiv)
.font(.caption)
.foregroundStyle(.secondary)
case .tumblr:
Image(fontAwesome: .tumblr)
.font(.caption)
.foregroundStyle(.secondary)
}
}
if !isDetail {
Expand Down Expand Up @@ -507,6 +506,7 @@ public struct StatusView: View {
private struct CollapsibleRichText: View {
let text: UiRichText
let lineLimit: Int?
let collapseThreshold: Int
let isExpanded: Bool
let isTextSelectionEnabled: Bool
let onOverflowChanged: (Bool) -> Void
Expand All @@ -519,9 +519,16 @@ private struct CollapsibleRichText: View {
max(lineHeight, fallbackLineHeight)
}

private var overflows: Bool {
fullHeight > ceil(effectiveLineHeight * CGFloat(max(collapseThreshold, 1))) + 1
}

private var collapsedHeight: CGFloat? {
guard let lineLimit, !isExpanded else { return nil }
return ceil(effectiveLineHeight * CGFloat(max(lineLimit, 1)))
if fullHeight == 0 {
return ceil(effectiveLineHeight * CGFloat(max(collapseThreshold, 1)))
}
return overflows ? ceil(effectiveLineHeight * CGFloat(max(lineLimit, 1))) : nil
}

var body: some View {
Expand Down Expand Up @@ -563,6 +570,9 @@ private struct CollapsibleRichText: View {
.onChange(of: lineLimit) { _, _ in
publishOverflow(fullHeight: fullHeight, lineHeight: lineHeight)
}
.onChange(of: collapseThreshold) { _, _ in
publishOverflow(fullHeight: fullHeight, lineHeight: lineHeight)
}
.onChange(of: isExpanded) { _, _ in
publishOverflow(fullHeight: fullHeight, lineHeight: lineHeight)
}
Expand All @@ -587,8 +597,8 @@ private struct CollapsibleRichText: View {
onOverflowChanged(false)
return
}
let limitHeight = ceil(max(lineHeight, fallbackLineHeight) * CGFloat(max(lineLimit, 1)))
onOverflowChanged(fullHeight > limitHeight + 1)
let thresholdHeight = ceil(max(lineHeight, fallbackLineHeight) * CGFloat(max(collapseThreshold, 1)))
onOverflowChanged(fullHeight > thresholdHeight + 1)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public struct StatusVisibilityView: View {
case .followers: Image(fontAwesome: .lock)
case .specified: Image(fontAwesome: .at)
case .channel: Image(fontAwesome: .tv)
case .private: Image(fontAwesome: .lock)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
"author" : "xcode",
"version" : 1
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"symbols" : [
{
"filename" : "tumblr.svg",
"idiom" : "universal"
}
]
}
Loading
Loading