fix privacy settings

This commit is contained in:
cheykrym 2025-12-11 05:16:23 +03:00
parent 997ddea9c4
commit b1d9112806
2 changed files with 38 additions and 28 deletions

View File

@ -434,7 +434,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements; CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9; CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = V22H44W47J; DEVELOPMENT_TEAM = V22H44W47J;
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
@ -475,7 +475,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements; CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9; CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = V22H44W47J; DEVELOPMENT_TEAM = V22H44W47J;
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;

View File

@ -70,35 +70,27 @@ struct EditPrivacyView: View {
Toggle(NSLocalizedString("Показывать био не-контактам", comment: ""), isOn: $profilePermissions.showBioToNonContacts) Toggle(NSLocalizedString("Показывать био не-контактам", comment: ""), isOn: $profilePermissions.showBioToNonContacts)
Toggle(NSLocalizedString("Показывать сторисы не-контактам", comment: ""), isOn: $profilePermissions.showStoriesToNonContacts) Toggle(NSLocalizedString("Показывать сторисы не-контактам", comment: ""), isOn: $profilePermissions.showStoriesToNonContacts)
Picker(NSLocalizedString("Видимость статуса 'был в сети'", comment: ""), selection: $profilePermissions.lastSeenVisibility) { privacyScopePicker(
ForEach(privacyScopeOptions) { scope in title: NSLocalizedString("Видимость статуса 'был в сети'", comment: ""),
Text(scope.title).tag(scope.rawValue) selection: $profilePermissions.lastSeenVisibility
} )
}
.pickerStyle(.segmented)
} }
Section(header: Text(NSLocalizedString("Приглашения и звонки", comment: ""))) { Section(header: Text(NSLocalizedString("Приглашения и звонки", comment: ""))) {
Picker(NSLocalizedString("Кто может приглашать в паблики", comment: ""), selection: $profilePermissions.publicInvitePermission) { privacyScopePicker(
ForEach(privacyScopeOptions) { scope in title: NSLocalizedString("Кто может приглашать в паблики", comment: ""),
Text(scope.title).tag(scope.rawValue) selection: $profilePermissions.publicInvitePermission
} )
}
.pickerStyle(.segmented)
Picker(NSLocalizedString("Кто может приглашать в беседы", comment: ""), selection: $profilePermissions.groupInvitePermission) { privacyScopePicker(
ForEach(privacyScopeOptions) { scope in title: NSLocalizedString("Кто может приглашать в беседы", comment: ""),
Text(scope.title).tag(scope.rawValue) selection: $profilePermissions.groupInvitePermission
} )
}
.pickerStyle(.segmented)
Picker(NSLocalizedString("Кто может звонить", comment: ""), selection: $profilePermissions.callPermission) { privacyScopePicker(
ForEach(privacyScopeOptions) { scope in title: NSLocalizedString("Кто может звонить", comment: ""),
Text(scope.title).tag(scope.rawValue) selection: $profilePermissions.callPermission
} )
}
.pickerStyle(.segmented)
} }
Section(header: Text(NSLocalizedString("Чаты и хранение", comment: ""))) { Section(header: Text(NSLocalizedString("Чаты и хранение", comment: ""))) {
@ -192,6 +184,24 @@ struct EditPrivacyView: View {
return "\(secondsString) (≈ \(formattedHours) ч.)" return "\(secondsString) (≈ \(formattedHours) ч.)"
} }
} }
@ViewBuilder
private func privacyScopePicker(title: String, selection: Binding<Int>) -> some View {
VStack(alignment: .leading, spacing: 6) {
Text(title)
.font(.body)
.foregroundColor(.primary)
Picker("", selection: selection) {
ForEach(privacyScopeOptions) { scope in
Text(scope.title).tag(scope.rawValue)
}
}
.pickerStyle(.segmented)
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.vertical, 4)
}
} }
private enum PrivacyScope: Int, CaseIterable, Identifiable { private enum PrivacyScope: Int, CaseIterable, Identifiable {