add localizable to edit privacy
This commit is contained in:
		
							parent
							
								
									60e689cca0
								
							
						
					
					
						commit
						62ee0e894a
					
				@ -82,12 +82,6 @@ final class ProfileService {
 | 
			
		||||
            completion(.failure(ProfileServiceError.encoding(message)))
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if let jsonString = String(data: body, encoding: .utf8) {
 | 
			
		||||
            print("📤 Request Body JSON:\n\(jsonString)")
 | 
			
		||||
        } else {
 | 
			
		||||
            print("⚠️ Не удалось преобразовать тело запроса в строку")
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        client.request(
 | 
			
		||||
            path: "/v1/profile/edit",
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,16 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "%@: %@" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "ru" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "new",
 | 
			
		||||
            "value" : "%1$@: %2$@"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "%lld" : {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
@ -148,7 +158,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Автоудаление аккаунта" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Account Auto-Deletion"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Активные сессии" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
@ -170,13 +187,34 @@
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Видимость и контент" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Visibility & Content"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Видимость статуса 'был в сети'" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "'Last Seen' Status Visibility"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Включить автоудаление аккаунта" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Enable Account Auto-Deletion"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Вложение" : {
 | 
			
		||||
 | 
			
		||||
@ -191,6 +229,16 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Все" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Everyone"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Вы" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
@ -221,7 +269,15 @@
 | 
			
		||||
      "comment" : "Global search section"
 | 
			
		||||
    },
 | 
			
		||||
    "Готово" : {
 | 
			
		||||
      "comment" : "Profile update success title"
 | 
			
		||||
      "comment" : "Profile update success title",
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Done"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Данные" : {
 | 
			
		||||
 | 
			
		||||
@ -420,6 +476,16 @@
 | 
			
		||||
    "Кликер в разработке" : {
 | 
			
		||||
      "comment" : "Concept tab placeholder title"
 | 
			
		||||
    },
 | 
			
		||||
    "Контакты" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Contacts"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Конфиденциальность" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
@ -456,13 +522,34 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Кто может звонить" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Who Can Call"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Кто может приглашать в беседы" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Who Can Invite to Group Chats"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Кто может приглашать в паблики" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Who Can Invite to Public Groups"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Лента" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
@ -519,8 +606,15 @@
 | 
			
		||||
    "Локальные чаты" : {
 | 
			
		||||
      "comment" : "Local search section"
 | 
			
		||||
    },
 | 
			
		||||
    "Максимальное время автоудаления: %@" : {
 | 
			
		||||
 | 
			
		||||
    "Максимальное время автоудаления" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Maximum Auto-Delete Time"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Мини-приложения" : {
 | 
			
		||||
      "comment" : "Applets",
 | 
			
		||||
@ -576,10 +670,25 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Настройки приватности" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Privacy Settings"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Настройки приватности обновлены." : {
 | 
			
		||||
      "comment" : "Profile update success fallback"
 | 
			
		||||
      "comment" : "Profile update success fallback",
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Privacy Settings Updated."
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Не удалось выполнить поиск." : {
 | 
			
		||||
      "comment" : "Search error fallback\nSearch service decoding error"
 | 
			
		||||
@ -793,6 +902,16 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Никто" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Nobody"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Ничего не найдено" : {
 | 
			
		||||
      "comment" : "Global search empty state"
 | 
			
		||||
    },
 | 
			
		||||
@ -831,7 +950,14 @@
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Ограничить таймер автоудаления (максимум)" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Limit Auto-Delete Timer (Maximum)"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Описание" : {
 | 
			
		||||
 | 
			
		||||
@ -1044,13 +1170,34 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Показывать био не-контактам" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Show Bio to Non-Contacts"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Показывать сторисы не-контактам" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Show Stories to Non-Contacts"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Показывать фото не-контактам" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Show Profile Photo to Non-Contacts"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Пользователь Системы 1" : {
 | 
			
		||||
      "comment" : "Тестовая подмена офф аккаунта",
 | 
			
		||||
@ -1079,7 +1226,14 @@
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Приватные чаты" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Private Chats"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Приглашение достигло лимита использования." : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
@ -1112,7 +1266,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Приглашения и звонки" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Invitations & Calls"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Приложение" : {
 | 
			
		||||
 | 
			
		||||
@ -1128,10 +1289,24 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Принимать сообщения от незнакомцев" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Allow Messages from Non-Contacts"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Принудительное включение автоудаления сообщений" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Force Auto-Delete in Private Chats"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Проверьте данные и повторите попытку." : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
@ -1170,19 +1345,47 @@
 | 
			
		||||
      "comment" : "Search placeholder title"
 | 
			
		||||
    },
 | 
			
		||||
    "Профиль и поиск" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Profile & Search"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Публичная информация" : {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Разрешить пересылку сообщений" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Allow Message Forwarding"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Разрешить поиск профиля" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Allow Profile Search"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Разрешить хранить чаты на сервере" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Allow Storing Chats on Server"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Регистрация" : {
 | 
			
		||||
      "comment" : "Регистрация",
 | 
			
		||||
@ -1246,7 +1449,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Сбросить по умолчанию" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Reset to Default"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Светлая" : {
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
@ -1352,7 +1562,14 @@
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    "Сохранить изменения" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Save Changes"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Спасибо!" : {
 | 
			
		||||
 | 
			
		||||
@ -1439,9 +1656,17 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Удалять аккаунт через %lld дн." : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Delete Account After %lld days."
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Ура!" : {
 | 
			
		||||
      "extractionState" : "stale",
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
@ -1494,7 +1719,14 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Чаты и хранение" : {
 | 
			
		||||
 | 
			
		||||
      "localizations" : {
 | 
			
		||||
        "en" : {
 | 
			
		||||
          "stringUnit" : {
 | 
			
		||||
            "state" : "translated",
 | 
			
		||||
            "value" : "Chats & Storage"
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "Черновики" : {
 | 
			
		||||
      "comment" : "Drafts",
 | 
			
		||||
 | 
			
		||||
@ -176,7 +176,7 @@ struct ChangePasswordView: View {
 | 
			
		||||
        .alert(item: $alertData) { data in
 | 
			
		||||
            Alert(
 | 
			
		||||
                title: Text(data.kind == .success
 | 
			
		||||
                             ? NSLocalizedString("Ура!", comment: "")
 | 
			
		||||
                             ? NSLocalizedString("Готово", comment: "")
 | 
			
		||||
                             : NSLocalizedString("Ошибка", comment: "")),
 | 
			
		||||
                message: Text(data.message),
 | 
			
		||||
                dismissButton: .default(Text(NSLocalizedString("OK", comment: ""))) {
 | 
			
		||||
 | 
			
		||||
@ -59,18 +59,18 @@ struct EditPrivacyView: View {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if !isLoading && loadError == nil {
 | 
			
		||||
                Section(header: Text("Профиль и поиск")) {
 | 
			
		||||
                    Toggle("Разрешить поиск профиля", isOn: $profilePermissions.isSearchable)
 | 
			
		||||
                    Toggle("Разрешить пересылку сообщений", isOn: $profilePermissions.allowMessageForwarding)
 | 
			
		||||
                    Toggle("Принимать сообщения от незнакомцев", isOn: $profilePermissions.allowMessagesFromNonContacts)
 | 
			
		||||
                Section(header: Text(NSLocalizedString("Профиль и поиск", comment: ""))) {
 | 
			
		||||
                    Toggle(NSLocalizedString("Разрешить поиск профиля", comment: ""), isOn: $profilePermissions.isSearchable)
 | 
			
		||||
                    Toggle(NSLocalizedString("Разрешить пересылку сообщений", comment: ""), isOn: $profilePermissions.allowMessageForwarding)
 | 
			
		||||
                    Toggle(NSLocalizedString("Принимать сообщения от незнакомцев", comment: ""), isOn: $profilePermissions.allowMessagesFromNonContacts)
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                Section(header: Text("Видимость и контент")) {
 | 
			
		||||
                    Toggle("Показывать фото не-контактам", isOn: $profilePermissions.showProfilePhotoToNonContacts)
 | 
			
		||||
                    Toggle("Показывать био не-контактам", isOn: $profilePermissions.showBioToNonContacts)
 | 
			
		||||
                    Toggle("Показывать сторисы не-контактам", isOn: $profilePermissions.showStoriesToNonContacts)
 | 
			
		||||
                Section(header: Text(NSLocalizedString("Видимость и контент", comment: ""))) {
 | 
			
		||||
                    Toggle(NSLocalizedString("Показывать фото не-контактам", comment: ""), isOn: $profilePermissions.showProfilePhotoToNonContacts)
 | 
			
		||||
                    Toggle(NSLocalizedString("Показывать био не-контактам", comment: ""), isOn: $profilePermissions.showBioToNonContacts)
 | 
			
		||||
                    Toggle(NSLocalizedString("Показывать сторисы не-контактам", comment: ""), isOn: $profilePermissions.showStoriesToNonContacts)
 | 
			
		||||
                    
 | 
			
		||||
                    Picker("Видимость статуса 'был в сети'", selection: $profilePermissions.lastSeenVisibility) {
 | 
			
		||||
                    Picker(NSLocalizedString("Видимость статуса 'был в сети'", comment: ""), selection: $profilePermissions.lastSeenVisibility) {
 | 
			
		||||
                        ForEach(privacyScopeOptions) { scope in
 | 
			
		||||
                            Text(scope.title).tag(scope.rawValue)
 | 
			
		||||
                        }
 | 
			
		||||
@ -78,22 +78,22 @@ struct EditPrivacyView: View {
 | 
			
		||||
                    .pickerStyle(.segmented)
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                Section(header: Text("Приглашения и звонки")) {
 | 
			
		||||
                    Picker("Кто может приглашать в паблики", selection: $profilePermissions.publicInvitePermission) {
 | 
			
		||||
                Section(header: Text(NSLocalizedString("Приглашения и звонки", comment: ""))) {
 | 
			
		||||
                    Picker(NSLocalizedString("Кто может приглашать в паблики", comment: ""), selection: $profilePermissions.publicInvitePermission) {
 | 
			
		||||
                        ForEach(privacyScopeOptions) { scope in
 | 
			
		||||
                            Text(scope.title).tag(scope.rawValue)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    .pickerStyle(.segmented)
 | 
			
		||||
                    
 | 
			
		||||
                    Picker("Кто может приглашать в беседы", selection: $profilePermissions.groupInvitePermission) {
 | 
			
		||||
                    Picker(NSLocalizedString("Кто может приглашать в беседы", comment: ""), selection: $profilePermissions.groupInvitePermission) {
 | 
			
		||||
                        ForEach(privacyScopeOptions) { scope in
 | 
			
		||||
                            Text(scope.title).tag(scope.rawValue)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    .pickerStyle(.segmented)
 | 
			
		||||
                    
 | 
			
		||||
                    Picker("Кто может звонить", selection: $profilePermissions.callPermission) {
 | 
			
		||||
                    Picker(NSLocalizedString("Кто может звонить", comment: ""), selection: $profilePermissions.callPermission) {
 | 
			
		||||
                        ForEach(privacyScopeOptions) { scope in
 | 
			
		||||
                            Text(scope.title).tag(scope.rawValue)
 | 
			
		||||
                        }
 | 
			
		||||
@ -101,27 +101,28 @@ struct EditPrivacyView: View {
 | 
			
		||||
                    .pickerStyle(.segmented)
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                Section(header: Text("Чаты и хранение")) {
 | 
			
		||||
                    Toggle("Разрешить хранить чаты на сервере", isOn: $profilePermissions.allowServerChats)
 | 
			
		||||
                Section(header: Text(NSLocalizedString("Чаты и хранение", comment: ""))) {
 | 
			
		||||
                    Toggle(NSLocalizedString("Разрешить хранить чаты на сервере", comment: ""), isOn: $profilePermissions.allowServerChats)
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                Section(header: Text("Приватные чаты")) {
 | 
			
		||||
                    Toggle("Принудительное включение автоудаления сообщений", isOn: $profilePermissions.forceAutoDeleteMessagesInPrivate)
 | 
			
		||||
                    Toggle("Ограничить таймер автоудаления (максимум)", isOn: autoDeleteTimerEnabled)
 | 
			
		||||
                Section(header: Text(NSLocalizedString("Приватные чаты", comment: ""))) {
 | 
			
		||||
                    Toggle(NSLocalizedString("Принудительное включение автоудаления сообщений", comment: ""), isOn: $profilePermissions.forceAutoDeleteMessagesInPrivate)
 | 
			
		||||
                    Toggle(NSLocalizedString("Ограничить таймер автоудаления (максимум)", comment: ""), isOn: autoDeleteTimerEnabled)
 | 
			
		||||
                    
 | 
			
		||||
                    if autoDeleteTimerEnabled.wrappedValue {
 | 
			
		||||
                        Stepper(value: autoDeleteTimerBinding, in: 5...86400, step: 5) {
 | 
			
		||||
                            Text("Максимальное время автоудаления: \(formattedAutoDeleteSeconds(autoDeleteTimerBinding.wrappedValue))")
 | 
			
		||||
                            Text("\(NSLocalizedString("Максимальное время автоудаления", comment: "")): \(formattedAutoDeleteSeconds(autoDeleteTimerBinding.wrappedValue))")
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                Section(header: Text("Автоудаление аккаунта")) {
 | 
			
		||||
                    Toggle("Включить автоудаление аккаунта", isOn: autoDeleteAccountEnabled)
 | 
			
		||||
                Section(header: Text(NSLocalizedString("Автоудаление аккаунта", comment: ""))) {
 | 
			
		||||
                    Toggle(NSLocalizedString("Включить автоудаление аккаунта", comment: ""), isOn: autoDeleteAccountEnabled)
 | 
			
		||||
                    
 | 
			
		||||
                    if autoDeleteAccountEnabled.wrappedValue {
 | 
			
		||||
                        Stepper(value: autoDeleteAccountBinding, in: 1...365) {
 | 
			
		||||
                            Text("Удалять аккаунт через \(autoDeleteAccountBinding.wrappedValue) дн.")
 | 
			
		||||
                            Text(String(format: NSLocalizedString("Удалять аккаунт через %lld дн.", comment: ""), autoDeleteAccountBinding.wrappedValue))
 | 
			
		||||
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
@ -136,7 +137,7 @@ struct EditPrivacyView: View {
 | 
			
		||||
                            ProgressView()
 | 
			
		||||
                                .frame(maxWidth: .infinity, alignment: .center)
 | 
			
		||||
                        } else {
 | 
			
		||||
                            Text("Сохранить изменения")
 | 
			
		||||
                            Text(NSLocalizedString("Сохранить изменения", comment: ""))
 | 
			
		||||
                                .frame(maxWidth: .infinity, alignment: .center)
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
@ -146,9 +147,9 @@ struct EditPrivacyView: View {
 | 
			
		||||
                Section {
 | 
			
		||||
                    Button(role: .destructive) {
 | 
			
		||||
                        profilePermissions = ProfilePermissionsState()
 | 
			
		||||
                        print("Настройки приватности сброшены к значениям по умолчанию")
 | 
			
		||||
                        if AppConfig.DEBUG {print("Настройки приватности сброшены к значениям по умолчанию")}
 | 
			
		||||
                    } label: {
 | 
			
		||||
                        Text("Сбросить по умолчанию")
 | 
			
		||||
                        Text(NSLocalizedString("Сбросить по умолчанию", comment: ""))
 | 
			
		||||
                            .frame(maxWidth: .infinity, alignment: .center)
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
@ -165,7 +166,7 @@ struct EditPrivacyView: View {
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
        .navigationTitle("Настройки приватности")
 | 
			
		||||
        .navigationTitle(NSLocalizedString("Настройки приватности", comment: ""))
 | 
			
		||||
        .task {
 | 
			
		||||
            await loadProfile()
 | 
			
		||||
        }
 | 
			
		||||
@ -203,11 +204,11 @@ private enum PrivacyScope: Int, CaseIterable, Identifiable {
 | 
			
		||||
    var title: String {
 | 
			
		||||
        switch self {
 | 
			
		||||
        case .everyone:
 | 
			
		||||
            return "Все"
 | 
			
		||||
            return NSLocalizedString("Все", comment: "")
 | 
			
		||||
        case .contacts:
 | 
			
		||||
            return "Контакты"
 | 
			
		||||
            return NSLocalizedString("Контакты", comment: "")
 | 
			
		||||
        case .nobody:
 | 
			
		||||
            return "Никто"
 | 
			
		||||
            return NSLocalizedString("Никто", comment: "")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user