mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2025-03-28 04:25:28 +00:00
Merge branch 'main' into tip-system
This commit is contained in:
commit
ce6ca8764f
11 changed files with 31 additions and 28 deletions
|
@ -1254,7 +1254,7 @@
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 730;
|
||||||
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
|
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
@ -1267,7 +1267,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.10.43;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).IceCubesApp.IceCubesAppWidgetsExtension";
|
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).IceCubesApp.IceCubesAppWidgetsExtension";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
|
@ -1290,7 +1290,7 @@
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 730;
|
||||||
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
|
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
@ -1303,7 +1303,7 @@
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.10.43;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).IceCubesApp.IceCubesAppWidgetsExtension";
|
PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_ID_PREFIX).IceCubesApp.IceCubesAppWidgetsExtension";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
|
@ -1391,7 +1391,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||||
|
@ -1457,7 +1457,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
||||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||||
|
|
|
@ -5,7 +5,7 @@ struct AppShortcuts: AppShortcutsProvider {
|
||||||
AppShortcut(
|
AppShortcut(
|
||||||
intent: PostIntent(),
|
intent: PostIntent(),
|
||||||
phrases: [
|
phrases: [
|
||||||
"Post \(\.$content) in \(.applicationName)",
|
"Post in \(.applicationName)",
|
||||||
"Post a status on Mastodon with \(.applicationName)",
|
"Post a status on Mastodon with \(.applicationName)",
|
||||||
],
|
],
|
||||||
shortTitle: "Compose a post",
|
shortTitle: "Compose a post",
|
||||||
|
@ -23,7 +23,6 @@ struct AppShortcuts: AppShortcutsProvider {
|
||||||
AppShortcut(
|
AppShortcut(
|
||||||
intent: TabIntent(),
|
intent: TabIntent(),
|
||||||
phrases: [
|
phrases: [
|
||||||
"Open \(\.$tab) in \(.applicationName)",
|
|
||||||
"Open \(.applicationName)",
|
"Open \(.applicationName)",
|
||||||
],
|
],
|
||||||
shortTitle: "Open Ice Cubes",
|
shortTitle: "Open Ice Cubes",
|
||||||
|
@ -32,8 +31,10 @@ struct AppShortcuts: AppShortcutsProvider {
|
||||||
AppShortcut(
|
AppShortcut(
|
||||||
intent: PostImageIntent(),
|
intent: PostImageIntent(),
|
||||||
phrases: [
|
phrases: [
|
||||||
"Post images \(\.$images) in \(.applicationName)",
|
"Post images in \(.applicationName)",
|
||||||
"Send photos \(\.$images) with \(.applicationName)",
|
"Post an image in \(.applicationName)",
|
||||||
|
"Send photos with \(.applicationName)",
|
||||||
|
"Send a photo with \(.applicationName)",
|
||||||
],
|
],
|
||||||
shortTitle: "Post a status with an image",
|
shortTitle: "Post a status with an image",
|
||||||
systemImageName: "photo"
|
systemImageName: "photo"
|
||||||
|
|
|
@ -2,7 +2,7 @@ import AppIntents
|
||||||
import WidgetKit
|
import WidgetKit
|
||||||
|
|
||||||
struct AccountWidgetConfiguration: WidgetConfigurationIntent {
|
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")
|
static let description = IntentDescription("Choose the account for this widget")
|
||||||
|
|
||||||
@Parameter(title: "Account")
|
@Parameter(title: "Account")
|
||||||
|
|
|
@ -2,7 +2,7 @@ import AppIntents
|
||||||
import WidgetKit
|
import WidgetKit
|
||||||
|
|
||||||
struct HashtagPostsWidgetConfiguration: WidgetConfigurationIntent {
|
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")
|
static let description = IntentDescription("Choose the account and hashtag for this widget")
|
||||||
|
|
||||||
@Parameter(title: "Account")
|
@Parameter(title: "Account")
|
||||||
|
|
|
@ -2,7 +2,7 @@ import AppIntents
|
||||||
import WidgetKit
|
import WidgetKit
|
||||||
|
|
||||||
struct LatestPostsWidgetConfiguration: WidgetConfigurationIntent {
|
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")
|
static let description = IntentDescription("Choose the account and timeline for this widget")
|
||||||
|
|
||||||
@Parameter(title: "Account")
|
@Parameter(title: "Account")
|
||||||
|
|
|
@ -2,7 +2,7 @@ import AppIntents
|
||||||
import WidgetKit
|
import WidgetKit
|
||||||
|
|
||||||
struct MentionsWidgetConfiguration: WidgetConfigurationIntent {
|
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")
|
static let description = IntentDescription("Choose the account for this widget")
|
||||||
|
|
||||||
@Parameter(title: "Account")
|
@Parameter(title: "Account")
|
||||||
|
|
|
@ -8,7 +8,7 @@ public struct NotificationsPolicy: Codable, Sendable {
|
||||||
public let summary: Summary
|
public let summary: Summary
|
||||||
|
|
||||||
public struct Summary: Codable, Sendable {
|
public struct Summary: Codable, Sendable {
|
||||||
public let pendingRequestsCount: String
|
public let pendingRequestsCount: Int
|
||||||
public let pendingNotificationsCount: String
|
public let pendingNotificationsCount: Int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,12 @@ struct NotificationsHeaderFilteredView: View {
|
||||||
let filteredNotifications: NotificationsPolicy.Summary
|
let filteredNotifications: NotificationsPolicy.Summary
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
if let count = Int(filteredNotifications.pendingNotificationsCount), count > 0 {
|
if filteredNotifications.pendingNotificationsCount > 0 {
|
||||||
HStack {
|
HStack {
|
||||||
Label("notifications.content-filter.requests.title", systemImage: "archivebox")
|
Label("notifications.content-filter.requests.title", systemImage: "archivebox")
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
Spacer()
|
Spacer()
|
||||||
Text(filteredNotifications.pendingNotificationsCount)
|
Text("\(filteredNotifications.pendingNotificationsCount)")
|
||||||
.font(.footnote)
|
.font(.footnote)
|
||||||
.fontWeight(.semibold)
|
.fontWeight(.semibold)
|
||||||
.monospacedDigit()
|
.monospacedDigit()
|
||||||
|
|
|
@ -212,6 +212,7 @@ struct StatusRowActionsView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
.sheet(isPresented: $showTextForSelection) {
|
.sheet(isPresented: $showTextForSelection) {
|
||||||
let content = viewModel.status.reblog?.content.asSafeMarkdownAttributedString ?? viewModel.status.content.asSafeMarkdownAttributedString
|
let content = viewModel.status.reblog?.content.asSafeMarkdownAttributedString ?? viewModel.status.content.asSafeMarkdownAttributedString
|
||||||
SelectTextView(content: content)
|
SelectTextView(content: content)
|
||||||
|
|
|
@ -27,7 +27,7 @@ struct StatusRowHeaderView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.accessibilityElement(children: .combine)
|
.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 {
|
.accessibilityAction {
|
||||||
viewModel.navigateToAccountDetail(account: viewModel.finalStatus.account)
|
viewModel.navigateToAccountDetail(account: viewModel.finalStatus.account)
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ struct StatusRowHeaderView: View {
|
||||||
Group {
|
Group {
|
||||||
EmojiTextApp(viewModel.finalStatus.account.cachedDisplayName,
|
EmojiTextApp(viewModel.finalStatus.account.cachedDisplayName,
|
||||||
emojis: viewModel.finalStatus.account.emojis)
|
emojis: viewModel.finalStatus.account.emojis)
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
.font(.scaledSubheadline)
|
.font(.scaledSubheadline)
|
||||||
.foregroundColor(theme.labelColor)
|
.foregroundColor(theme.labelColor)
|
||||||
.emojiText.size(Font.scaledSubheadlineFont.emojiSize)
|
.emojiText.size(Font.scaledSubheadlineFont.emojiSize)
|
||||||
|
@ -59,6 +60,7 @@ struct StatusRowHeaderView: View {
|
||||||
|
|
||||||
if !redactionReasons.contains(.placeholder) {
|
if !redactionReasons.contains(.placeholder) {
|
||||||
accountBadgeView
|
accountBadgeView
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
.font(.footnote)
|
.font(.footnote)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,6 +71,7 @@ struct StatusRowHeaderView: View {
|
||||||
theme.avatarPosition == .top
|
theme.avatarPosition == .top
|
||||||
{
|
{
|
||||||
Text("@\(theme.displayFullUsername ? viewModel.finalStatus.account.acct : viewModel.finalStatus.account.username)")
|
Text("@\(theme.displayFullUsername ? viewModel.finalStatus.account.acct : viewModel.finalStatus.account.username)")
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
.font(.scaledFootnote)
|
.font(.scaledFootnote)
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.lineLimit(1)
|
.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 {
|
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 {
|
} 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 {
|
private var dateView: some View {
|
||||||
Group {
|
Text("\(Image(systemName: viewModel.finalStatus.visibility.iconName)) ⸱ \(viewModel.finalStatus.createdAt.relativeFormatted)")
|
||||||
Text(Image(systemName: viewModel.finalStatus.visibility.iconName)) +
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
Text(" ⸱ ") +
|
|
||||||
Text(viewModel.finalStatus.createdAt.relativeFormatted)
|
|
||||||
}
|
|
||||||
.font(.scaledFootnote)
|
.font(.scaledFootnote)
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.lineLimit(1)
|
.lineLimit(1)
|
||||||
|
|
|
@ -19,6 +19,7 @@ struct StatusRowTextView: View {
|
||||||
emojis: viewModel.finalStatus.emojis,
|
emojis: viewModel.finalStatus.emojis,
|
||||||
language: viewModel.finalStatus.language,
|
language: viewModel.finalStatus.language,
|
||||||
lineLimit: viewModel.lineLimit)
|
lineLimit: viewModel.lineLimit)
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
.font(isFocused ? .scaledBodyFocused : .scaledBody)
|
.font(isFocused ? .scaledBodyFocused : .scaledBody)
|
||||||
.lineSpacing(CGFloat(theme.lineSpacing))
|
.lineSpacing(CGFloat(theme.lineSpacing))
|
||||||
.foregroundColor(viewModel.textDisabled ? .gray : theme.labelColor)
|
.foregroundColor(viewModel.textDisabled ? .gray : theme.labelColor)
|
||||||
|
|
Loading…
Reference in a new issue