Merge branch 'main' into tip-system

This commit is contained in:
Thomas Ricouard 2024-06-26 13:32:50 +02:00
commit ce6ca8764f
11 changed files with 31 additions and 28 deletions

View file

@ -1254,7 +1254,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 730;
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
@ -1267,7 +1267,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 1.10.43;
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).IceCubesApp.IceCubesAppWidgetsExtension";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@ -1290,7 +1290,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 730;
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
@ -1303,7 +1303,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 1.10.43;
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).IceCubesApp.IceCubesAppWidgetsExtension";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
@ -1391,7 +1391,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@ -1457,7 +1457,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";

View file

@ -5,7 +5,7 @@ struct AppShortcuts: AppShortcutsProvider {
AppShortcut(
intent: PostIntent(),
phrases: [
"Post \(\.$content) in \(.applicationName)",
"Post in \(.applicationName)",
"Post a status on Mastodon with \(.applicationName)",
],
shortTitle: "Compose a post",
@ -23,7 +23,6 @@ struct AppShortcuts: AppShortcutsProvider {
AppShortcut(
intent: TabIntent(),
phrases: [
"Open \(\.$tab) in \(.applicationName)",
"Open \(.applicationName)",
],
shortTitle: "Open Ice Cubes",
@ -32,8 +31,10 @@ struct AppShortcuts: AppShortcutsProvider {
AppShortcut(
intent: PostImageIntent(),
phrases: [
"Post images \(\.$images) in \(.applicationName)",
"Send photos \(\.$images) with \(.applicationName)",
"Post images in \(.applicationName)",
"Post an image in \(.applicationName)",
"Send photos with \(.applicationName)",
"Send a photo with \(.applicationName)",
],
shortTitle: "Post a status with an image",
systemImageName: "photo"

View file

@ -2,7 +2,7 @@ import AppIntents
import WidgetKit
struct AccountWidgetConfiguration: WidgetConfigurationIntent {
static let title: LocalizedStringResource = "Configuration"
static let title: LocalizedStringResource = "Account Widget Configuration"
static let description = IntentDescription("Choose the account for this widget")
@Parameter(title: "Account")

View file

@ -2,7 +2,7 @@ import AppIntents
import WidgetKit
struct HashtagPostsWidgetConfiguration: WidgetConfigurationIntent {
static let title: LocalizedStringResource = "Configuration"
static let title: LocalizedStringResource = "Hashtag Widget Configuration"
static let description = IntentDescription("Choose the account and hashtag for this widget")
@Parameter(title: "Account")

View file

@ -2,7 +2,7 @@ import AppIntents
import WidgetKit
struct LatestPostsWidgetConfiguration: WidgetConfigurationIntent {
static let title: LocalizedStringResource = "Configuration"
static let title: LocalizedStringResource = "Timeline Widget Configuration"
static let description = IntentDescription("Choose the account and timeline for this widget")
@Parameter(title: "Account")

View file

@ -2,7 +2,7 @@ import AppIntents
import WidgetKit
struct MentionsWidgetConfiguration: WidgetConfigurationIntent {
static let title: LocalizedStringResource = "Configuration"
static let title: LocalizedStringResource = "Mentions Widget Configuration"
static let description = IntentDescription("Choose the account for this widget")
@Parameter(title: "Account")

View file

@ -8,7 +8,7 @@ public struct NotificationsPolicy: Codable, Sendable {
public let summary: Summary
public struct Summary: Codable, Sendable {
public let pendingRequestsCount: String
public let pendingNotificationsCount: String
public let pendingRequestsCount: Int
public let pendingNotificationsCount: Int
}
}

View file

@ -10,12 +10,12 @@ struct NotificationsHeaderFilteredView: View {
let filteredNotifications: NotificationsPolicy.Summary
var body: some View {
if let count = Int(filteredNotifications.pendingNotificationsCount), count > 0 {
if filteredNotifications.pendingNotificationsCount > 0 {
HStack {
Label("notifications.content-filter.requests.title", systemImage: "archivebox")
.foregroundStyle(.secondary)
Spacer()
Text(filteredNotifications.pendingNotificationsCount)
Text("\(filteredNotifications.pendingNotificationsCount)")
.font(.footnote)
.fontWeight(.semibold)
.monospacedDigit()

View file

@ -212,6 +212,7 @@ struct StatusRowActionsView: View {
}
}
}
.fixedSize(horizontal: false, vertical: true)
.sheet(isPresented: $showTextForSelection) {
let content = viewModel.status.reblog?.content.asSafeMarkdownAttributedString ?? viewModel.status.content.asSafeMarkdownAttributedString
SelectTextView(content: content)

View file

@ -27,7 +27,7 @@ struct StatusRowHeaderView: View {
}
}
.accessibilityElement(children: .combine)
.accessibilityLabel(Text("\(viewModel.finalStatus.account.safeDisplayName)") + Text(", ") + Text(viewModel.finalStatus.createdAt.relativeFormatted))
.accessibilityLabel(Text("\(viewModel.finalStatus.account.safeDisplayName), \(viewModel.finalStatus.createdAt.relativeFormatted)"))
.accessibilityAction {
viewModel.navigateToAccountDetail(account: viewModel.finalStatus.account)
}
@ -47,6 +47,7 @@ struct StatusRowHeaderView: View {
Group {
EmojiTextApp(viewModel.finalStatus.account.cachedDisplayName,
emojis: viewModel.finalStatus.account.emojis)
.fixedSize(horizontal: false, vertical: true)
.font(.scaledSubheadline)
.foregroundColor(theme.labelColor)
.emojiText.size(Font.scaledSubheadlineFont.emojiSize)
@ -59,6 +60,7 @@ struct StatusRowHeaderView: View {
if !redactionReasons.contains(.placeholder) {
accountBadgeView
.fixedSize(horizontal: false, vertical: true)
.font(.footnote)
}
}
@ -69,6 +71,7 @@ struct StatusRowHeaderView: View {
theme.avatarPosition == .top
{
Text("@\(theme.displayFullUsername ? viewModel.finalStatus.account.acct : viewModel.finalStatus.account.username)")
.fixedSize(horizontal: false, vertical: true)
.font(.scaledFootnote)
.foregroundStyle(.secondary)
.lineLimit(1)
@ -81,21 +84,18 @@ struct StatusRowHeaderView: View {
}
}
private var accountBadgeView: Text {
private var accountBadgeView: Text? {
if (viewModel.status.reblogAsAsStatus ?? viewModel.status).account.bot {
return Text(Image(systemName: "poweroutlet.type.b.fill")) + Text(" ")
return Text("\(Image(systemName: "poweroutlet.type.b.fill")) ")
} else if (viewModel.status.reblogAsAsStatus ?? viewModel.status).account.locked {
return Text(Image(systemName: "lock.fill")) + Text(" ")
return Text("\(Image(systemName: "lock.fill")) ")
}
return Text("")
return nil
}
private var dateView: some View {
Group {
Text(Image(systemName: viewModel.finalStatus.visibility.iconName)) +
Text("") +
Text(viewModel.finalStatus.createdAt.relativeFormatted)
}
Text("\(Image(systemName: viewModel.finalStatus.visibility.iconName))\(viewModel.finalStatus.createdAt.relativeFormatted)")
.fixedSize(horizontal: false, vertical: true)
.font(.scaledFootnote)
.foregroundStyle(.secondary)
.lineLimit(1)

View file

@ -19,6 +19,7 @@ struct StatusRowTextView: View {
emojis: viewModel.finalStatus.emojis,
language: viewModel.finalStatus.language,
lineLimit: viewModel.lineLimit)
.fixedSize(horizontal: false, vertical: true)
.font(isFocused ? .scaledBodyFocused : .scaledBody)
.lineSpacing(CGFloat(theme.lineSpacing))
.foregroundColor(viewModel.textDisabled ? .gray : theme.labelColor)