fix ideas
This commit is contained in:
parent
c2647fa22e
commit
8eb1e17692
@ -395,7 +395,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 = 2;
|
CURRENT_PROJECT_VERSION = 3;
|
||||||
DEVELOPMENT_TEAM = V22H44W47J;
|
DEVELOPMENT_TEAM = V22H44W47J;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@ -435,7 +435,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 = 2;
|
CURRENT_PROJECT_VERSION = 3;
|
||||||
DEVELOPMENT_TEAM = V22H44W47J;
|
DEVELOPMENT_TEAM = V22H44W47J;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"sourceLanguage" : "ru",
|
"sourceLanguage" : "ru",
|
||||||
"strings" : {
|
"strings" : {
|
||||||
"%lld": {},
|
"(не работает) Отправить предложение" : {
|
||||||
|
|
||||||
|
},
|
||||||
"@%@" : {
|
"@%@" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -12,8 +14,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Chat ID:": {},
|
"%lld" : {
|
||||||
"Companion ID:": {},
|
|
||||||
|
},
|
||||||
|
"🌍" : {
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "🌍"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Chat ID:" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Companion ID:" : {
|
||||||
|
|
||||||
|
},
|
||||||
"DEBUG UPDATE" : {
|
"DEBUG UPDATE" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -61,7 +80,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Push-уведомления": {},
|
"profile_down_text_1" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"profile_down_text_2" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"profile_down_text_3" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Push-уведомления" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Yobble" : {
|
"Yobble" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -72,14 +102,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"profile_down_text_1": {},
|
"Активные сессии" : {
|
||||||
"profile_down_text_2": {},
|
|
||||||
"profile_down_text_3": {},
|
},
|
||||||
"Активные сессии": {},
|
"Без звука (скоро)" : {
|
||||||
"Без звука (скоро)": {},
|
|
||||||
"Безопасность": {},
|
},
|
||||||
"Ваше предложение": {},
|
"Безопасность" : {
|
||||||
"Вложение": {},
|
|
||||||
|
},
|
||||||
|
"Ваше предложение" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Вложение" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Войти" : {
|
"Войти" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -90,14 +127,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Вы": {},
|
"Вы" : {
|
||||||
"Вы предложили: %@": {},
|
|
||||||
"Выйти из аккаунта": {},
|
},
|
||||||
|
"Вы предложили: %@" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Выйти из аккаунта" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Где найти сохранённые черновики?" : {
|
"Где найти сохранённые черновики?" : {
|
||||||
"comment" : "FAQ question: drafts"
|
"comment" : "FAQ question: drafts"
|
||||||
},
|
},
|
||||||
"Данные": {},
|
"Данные" : {
|
||||||
"Двухфакторная аутентификация": {},
|
|
||||||
|
},
|
||||||
|
"Двухфакторная аутентификация" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Добавить друзей" : {
|
"Добавить друзей" : {
|
||||||
"comment" : "Add friends",
|
"comment" : "Add friends",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -109,15 +156,33 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Другое": {},
|
"Другое" : {
|
||||||
"Заглушка: Push-уведомления": {},
|
|
||||||
"Заглушка: Активные сессии": {},
|
},
|
||||||
"Заглушка: Двухфакторная аутентификация": {},
|
"Заглушка: Push-уведомления" : {
|
||||||
"Заглушка: Другие настройки": {},
|
|
||||||
"Заглушка: Обратная связь": {},
|
},
|
||||||
"Заглушка: Сменить пароль": {},
|
"Заглушка: Активные сессии" : {
|
||||||
"Заглушка: Хранилище данных": {},
|
|
||||||
"Загружаем чаты…": {},
|
},
|
||||||
|
"Заглушка: Двухфакторная аутентификация" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Заглушка: Другие настройки" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Заглушка: Обратная связь" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Заглушка: Сменить пароль" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Заглушка: Хранилище данных" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Загружаем чаты…" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Загрузка..." : {
|
"Загрузка..." : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"en" : {
|
"en" : {
|
||||||
@ -139,7 +204,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Закрепить (скоро)": {},
|
"Закрепить (скоро)" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Закрыть" : {
|
"Закрыть" : {
|
||||||
"comment" : "Закрыть",
|
"comment" : "Закрыть",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -162,9 +229,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Здесь не будут чаты": {},
|
"Здесь не будут чаты" : {
|
||||||
"Идеи": {},
|
|
||||||
"Избранные сообщения": {},
|
},
|
||||||
|
"Идеи" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Избранные сообщения" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Инвайт-код (необязательно)" : {
|
"Инвайт-код (необязательно)" : {
|
||||||
"comment" : "Инвайт-код",
|
"comment" : "Инвайт-код",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -193,7 +266,9 @@
|
|||||||
"Как связаться с поддержкой?" : {
|
"Как связаться с поддержкой?" : {
|
||||||
"comment" : "FAQ question: support"
|
"comment" : "FAQ question: support"
|
||||||
},
|
},
|
||||||
"Какая вкладка вам нужна?": {},
|
"Какая вкладка вам нужна?" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Корзина" : {
|
"Корзина" : {
|
||||||
"comment" : "Cart",
|
"comment" : "Cart",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -216,8 +291,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Лента": {},
|
"Лента" : {
|
||||||
"Лицо": {},
|
|
||||||
|
},
|
||||||
|
"Лицо" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Логин" : {
|
"Логин" : {
|
||||||
"comment" : "Логин",
|
"comment" : "Логин",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -240,7 +319,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Логин уже занят.": {},
|
"Логин уже занят." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Мини-приложения" : {
|
"Мини-приложения" : {
|
||||||
"comment" : "Applets",
|
"comment" : "Applets",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -274,12 +355,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Мой профиль": {},
|
"Мой профиль" : {
|
||||||
"Мы планируем заменить вкладку. Поделитесь, что бы вы хотели видеть здесь чаще всего.": {},
|
|
||||||
|
},
|
||||||
|
"Мы планируем заменить вкладку. Поделитесь, что бы вы хотели видеть здесь чаще всего." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Напишите нам через форму обратной связи в разделе \"Поддержка\"." : {
|
"Напишите нам через форму обратной связи в разделе \"Поддержка\"." : {
|
||||||
"comment" : "FAQ answer: support"
|
"comment" : "FAQ answer: support"
|
||||||
},
|
},
|
||||||
"Например: закладки, друзья, активность...": {},
|
"Например: закладки, друзья, активность..." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Настройки" : {
|
"Настройки" : {
|
||||||
"comment" : "Settings",
|
"comment" : "Settings",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -291,46 +378,99 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Не удалось загрузить список чатов.": {},
|
"Не удалось загрузить список чатов." : {
|
||||||
"Не удалось загрузить чаты.": {},
|
|
||||||
"Не удалось обработать данные чатов.": {},
|
},
|
||||||
"Не удалось обработать ответ сервера.": {},
|
"Не удалось загрузить чаты." : {
|
||||||
"Не удалось сериализовать данные запроса.": {},
|
|
||||||
"Неверный запрос (400).": {},
|
},
|
||||||
"Неверный код приглашения.": {},
|
"Не удалось обработать данные чатов." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Не удалось обработать ответ сервера." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Не удалось сериализовать данные запроса." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Неверный запрос (400)." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Неверный код приглашения." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Неверный логин" : {
|
"Неверный логин" : {
|
||||||
"comment" : "Неверный логин"
|
"comment" : "Неверный логин"
|
||||||
},
|
},
|
||||||
"Неверный логин или пароль.": {},
|
"Неверный логин или пароль." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Неверный пароль" : {
|
"Неверный пароль" : {
|
||||||
"comment" : "Неверный пароль"
|
"comment" : "Неверный пароль"
|
||||||
},
|
},
|
||||||
"Неизвестная ошибка": {},
|
"Неизвестная ошибка" : {
|
||||||
"Неизвестная ошибка.": {},
|
|
||||||
"Неизвестная ошибка. Попробуйте позже.": {},
|
},
|
||||||
"Неизвестный": {},
|
"Неизвестная ошибка." : {
|
||||||
"Неизвестный пользователь": {},
|
|
||||||
"Некорректный ответ от сервера.": {},
|
},
|
||||||
|
"Неизвестная ошибка. Попробуйте позже." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Неизвестный" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Неизвестный пользователь" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Некорректный ответ от сервера." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Нет аккаунта? Регистрация" : {
|
"Нет аккаунта? Регистрация" : {
|
||||||
"comment" : "Регистрация"
|
"comment" : "Регистрация"
|
||||||
},
|
},
|
||||||
"Нет сообщений": {},
|
"Нет сообщений" : {
|
||||||
"О приложении": {},
|
|
||||||
"Обновить": {},
|
},
|
||||||
"Обратная связь": {},
|
"О приложении" : {
|
||||||
"Описание": {},
|
|
||||||
"Отображаемое имя": {},
|
},
|
||||||
"Отправить предложение": {},
|
"Обновить" : {
|
||||||
"Отправляем...": {},
|
|
||||||
"Ошибка авторизации": {},
|
},
|
||||||
"Ошибка при деавторизации.": {},
|
"Обратная связь" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Описание" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Отображаемое имя" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Отправляем..." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка авторизации" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка при деавторизации." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Ошибка регистрация" : {
|
"Ошибка регистрация" : {
|
||||||
"comment" : "Ошибка"
|
"comment" : "Ошибка"
|
||||||
},
|
},
|
||||||
"Ошибка сервера (%@).": {},
|
"Ошибка сервера (%@)." : {
|
||||||
"Ошибка сервера: %@": {},
|
|
||||||
"Ошибка сети: %@": {},
|
},
|
||||||
"Ошибка соединения с сервером.": {},
|
"Ошибка сервера: %@" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка сети: %@" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка соединения с сервером." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Пароли не совпадают" : {
|
"Пароли не совпадают" : {
|
||||||
"comment" : "Пароли не совпадают"
|
"comment" : "Пароли не совпадают"
|
||||||
},
|
},
|
||||||
@ -343,12 +483,18 @@
|
|||||||
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям." : {
|
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям." : {
|
||||||
"comment" : "FAQ answer: reset password"
|
"comment" : "FAQ answer: reset password"
|
||||||
},
|
},
|
||||||
"Повторить": {},
|
"Повторить" : {
|
||||||
"Поддержка": {},
|
|
||||||
|
},
|
||||||
|
"Поддержка" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Подтверждение пароля" : {
|
"Подтверждение пароля" : {
|
||||||
"comment" : "Подтверждение пароля"
|
"comment" : "Подтверждение пароля"
|
||||||
},
|
},
|
||||||
"Пока что у вас нет чатов": {},
|
"Пока что у вас нет чатов" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Помощь" : {
|
"Помощь" : {
|
||||||
"comment" : "Help Center",
|
"comment" : "Help Center",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -360,24 +506,54 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Приглашение достигло лимита использования.": {},
|
"Приглашение достигло лимита использования." : {
|
||||||
"Приглашение истекло.": {},
|
|
||||||
"Приглашение не активно.": {},
|
},
|
||||||
"Приложение": {},
|
"Приглашение истекло." : {
|
||||||
"Применить": {},
|
|
||||||
"Произошла ошибка.": {},
|
},
|
||||||
"Профиль": {},
|
"Приглашение не активно." : {
|
||||||
"Публичная информация": {},
|
|
||||||
|
},
|
||||||
|
"Приложение" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Применить" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Произошла ошибка." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Профиль" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Публичная информация" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Регистрация" : {
|
"Регистрация" : {
|
||||||
"comment" : "Регистрация"
|
"comment" : "Регистрация"
|
||||||
},
|
},
|
||||||
"Регистрация временно недоступна.": {},
|
"Регистрация временно недоступна." : {
|
||||||
"Регистрация выполнена, но вход не удался.": {},
|
|
||||||
"Регистрация запрещена.": {},
|
},
|
||||||
"Регистрация и вход выполнены успешно.": {},
|
"Регистрация выполнена, но вход не удался." : {
|
||||||
"Редактировать профиль": {},
|
|
||||||
"Сервер не отвечает. Попробуйте позже.": {},
|
},
|
||||||
"Сессия истекла. Войдите снова.": {},
|
"Регистрация запрещена." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Регистрация и вход выполнены успешно." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Редактировать профиль" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Сервер не отвечает. Попробуйте позже." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Сессия истекла. Войдите снова." : {
|
||||||
|
|
||||||
|
},
|
||||||
"Скан" : {
|
"Скан" : {
|
||||||
"comment" : "Scan",
|
"comment" : "Scan",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -389,13 +565,27 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Слишком много запросов.": {},
|
"Слишком много запросов." : {
|
||||||
"Сменить пароль": {},
|
|
||||||
"Сообщение": {},
|
},
|
||||||
"Спасибо!": {},
|
"Сменить пароль" : {
|
||||||
"Тёмная тема": {},
|
|
||||||
"Уведомления": {},
|
},
|
||||||
"Удалить чат (скоро)": {},
|
"Сообщение" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Спасибо!" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Тёмная тема" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Уведомления" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Удалить чат (скоро)" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Центр авторов" : {
|
"Центр авторов" : {
|
||||||
"comment" : "Creator Center",
|
"comment" : "Creator Center",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -410,8 +600,12 @@
|
|||||||
"Частые вопросы" : {
|
"Частые вопросы" : {
|
||||||
"comment" : "FAQ navigation title"
|
"comment" : "FAQ navigation title"
|
||||||
},
|
},
|
||||||
"Чат": {},
|
"Чат" : {
|
||||||
"Чаты": {},
|
|
||||||
|
},
|
||||||
|
"Чаты" : {
|
||||||
|
|
||||||
|
},
|
||||||
"Черновики" : {
|
"Черновики" : {
|
||||||
"comment" : "Drafts",
|
"comment" : "Drafts",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@ -426,17 +620,11 @@
|
|||||||
"Черновики доступны в боковом меню в разделе Drafts." : {
|
"Черновики доступны в боковом меню в разделе Drafts." : {
|
||||||
"comment" : "FAQ answer: drafts"
|
"comment" : "FAQ answer: drafts"
|
||||||
},
|
},
|
||||||
"Экран чата в разработке": {},
|
"Экран чата в разработке" : {
|
||||||
"Язык": {},
|
|
||||||
"🌍": {
|
},
|
||||||
"localizations": {
|
"Язык" : {
|
||||||
"en": {
|
|
||||||
"stringUnit": {
|
|
||||||
"state": "translated",
|
|
||||||
"value": "🌍"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version" : "1.0"
|
"version" : "1.0"
|
||||||
|
|||||||
@ -1,10 +1,14 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
#if canImport(UIKit)
|
||||||
|
import UIKit
|
||||||
|
#endif
|
||||||
|
|
||||||
struct FeedbackTab: View {
|
struct FeedbackTab: View {
|
||||||
@State private var suggestion: String = ""
|
@State private var suggestion: String = ""
|
||||||
@State private var submittedSuggestion: String? = nil
|
@State private var submittedSuggestion: String? = nil
|
||||||
@State private var isSubmitting: Bool = false
|
@State private var isSubmitting: Bool = false
|
||||||
@State private var showSubmissionMessage: Bool = false
|
@State private var showSubmissionMessage: Bool = false
|
||||||
|
@FocusState private var isSuggestionFocused: Bool
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ScrollView {
|
ScrollView {
|
||||||
@ -45,6 +49,7 @@ struct FeedbackTab: View {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
.disableAutocorrection(true)
|
.disableAutocorrection(true)
|
||||||
|
.focused($isSuggestionFocused)
|
||||||
}
|
}
|
||||||
|
|
||||||
Button(action: submitSuggestion) {
|
Button(action: submitSuggestion) {
|
||||||
@ -55,7 +60,7 @@ struct FeedbackTab: View {
|
|||||||
}
|
}
|
||||||
Text(isSubmitting
|
Text(isSubmitting
|
||||||
? NSLocalizedString("Отправляем...", comment: "")
|
? NSLocalizedString("Отправляем...", comment: "")
|
||||||
: NSLocalizedString("Отправить предложение", comment: ""))
|
: NSLocalizedString("(не работает) Отправить предложение", comment: ""))
|
||||||
.fontWeight(.semibold)
|
.fontWeight(.semibold)
|
||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
@ -88,6 +93,11 @@ struct FeedbackTab: View {
|
|||||||
.padding(.horizontal, 20)
|
.padding(.horizontal, 20)
|
||||||
.padding(.vertical, 32)
|
.padding(.vertical, 32)
|
||||||
}
|
}
|
||||||
|
.simultaneousGesture(
|
||||||
|
TapGesture().onEnded {
|
||||||
|
dismissKeyboardIfNeeded()
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var suggestionIsValid: Bool {
|
private var suggestionIsValid: Bool {
|
||||||
@ -98,6 +108,8 @@ struct FeedbackTab: View {
|
|||||||
guard suggestionIsValid else { return }
|
guard suggestionIsValid else { return }
|
||||||
let trimmed = suggestion.trimmingCharacters(in: .whitespacesAndNewlines)
|
let trimmed = suggestion.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||||
|
|
||||||
|
dismissKeyboardIfNeeded()
|
||||||
|
|
||||||
isSubmitting = true
|
isSubmitting = true
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { // имитируем сетевой вызов
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { // имитируем сетевой вызов
|
||||||
submittedSuggestion = trimmed
|
submittedSuggestion = trimmed
|
||||||
@ -110,6 +122,17 @@ struct FeedbackTab: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private extension FeedbackTab {
|
||||||
|
func dismissKeyboardIfNeeded() {
|
||||||
|
guard isSuggestionFocused else { return }
|
||||||
|
isSuggestionFocused = false
|
||||||
|
|
||||||
|
#if canImport(UIKit)
|
||||||
|
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct FeedbackTab_Previews: PreviewProvider {
|
struct FeedbackTab_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
FeedbackTab()
|
FeedbackTab()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user