diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt index 48ac5aee1..3b2b81287 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt @@ -21,7 +21,6 @@ import com.vitorpamplona.amethyst.service.relays.Client import com.vitorpamplona.amethyst.ui.screen.AccountScreen import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel import com.vitorpamplona.amethyst.ui.theme.AmethystTheme -import java.util.Locale class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt index 400d728d7..5e1b20990 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt @@ -9,12 +9,11 @@ import android.os.Environment import android.provider.MediaStore import androidx.annotation.RequiresApi import androidx.core.net.toUri -import java.io.File -import com.vitorpamplona.amethyst.R import okhttp3.* import okio.BufferedSource import okio.IOException import okio.sink +import java.io.File object ImageSaver { @@ -50,7 +49,7 @@ object ImageSaver { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val contentType = response.header("Content-Type") checkNotNull(contentType) { - context.getString(R.string.can_t_find_out_the_content_type) + "Can't find out the content type" } saveContentQ( @@ -58,7 +57,6 @@ object ImageSaver { contentType = contentType, contentSource = response.body.source(), contentResolver = context.contentResolver, - context = context ) } else { saveContentDefault( @@ -82,7 +80,6 @@ object ImageSaver { contentType: String, contentSource: BufferedSource, contentResolver: ContentResolver, - context: Context ) { val contentValues = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, displayName) @@ -96,13 +93,13 @@ object ImageSaver { val uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues) checkNotNull(uri) { - context.getString(R.string.can_t_insert_the_new_content) + "Can't insert the new content" } try { val outputStream = contentResolver.openOutputStream(uri) checkNotNull(outputStream) { - context.getString(R.string.can_t_open_the_content_output_stream) + "Can't open the content output stream" } outputStream.use { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt index c426c3a71..ccb6b49cb 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt @@ -1,23 +1,14 @@ package com.vitorpamplona.amethyst.ui.actions import android.content.ContentResolver -import android.content.Context import android.net.Uri import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import java.io.IOException -import java.util.UUID -import okhttp3.Call -import okhttp3.Callback -import okhttp3.MediaType -import com.vitorpamplona.amethyst.R +import okhttp3.* import okhttp3.MediaType.Companion.toMediaType -import okhttp3.MultipartBody -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.RequestBody -import okhttp3.Response import okio.BufferedSink import okio.source +import java.io.IOException +import java.util.* object ImageUploader { fun uploadImage( @@ -25,7 +16,6 @@ object ImageUploader { contentResolver: ContentResolver, onSuccess: (String) -> Unit, onError: (Throwable) -> Unit, - context : Context ) { val contentType = contentResolver.getType(uri) @@ -43,7 +33,7 @@ object ImageUploader { override fun writeTo(sink: BufferedSink) { val imageInputStream = contentResolver.openInputStream(uri) checkNotNull(imageInputStream) { - context.getString(R.string.can_t_open_the_image_input_stream) + "Can't open the image input stream" } imageInputStream.source().use(sink::writeAll) @@ -66,7 +56,7 @@ object ImageUploader { val tree = jacksonObjectMapper().readTree(body.string()) val url = tree?.get("data")?.get("link")?.asText() checkNotNull(url) { - context.getString(R.string.there_must_be_an_uploaded_image_url_in_the_response) + "There must be an uploaded image URL in the response" } onSuccess(url) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt index 37a9114a4..de6470d22 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt @@ -9,12 +9,7 @@ import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.vitorpamplona.amethyst.model.Account -import com.vitorpamplona.amethyst.model.LocalCache -import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.amethyst.model.parseDirtyWordForKey -import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.model.* import com.vitorpamplona.amethyst.ui.components.isValidURL import com.vitorpamplona.amethyst.ui.components.noProtocolUrlValidator import kotlinx.coroutines.flow.MutableSharedFlow @@ -134,10 +129,9 @@ class NewPostViewModel: ViewModel() { onError = { isUploadingImage = false viewModelScope.launch { - imageUploadingError.emit(context.getString(R.string.failed_to_upload_the_image)) + imageUploadingError.emit("Failed to upload the image") } - }, - context = context + } ) } diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 829d4df40..4e0578e1b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -59,11 +59,6 @@ خطأ في تحليل المعاينة لـ %1$s : %2$s معاينة صورة البطاقة لـ %1$s قناة جديدة - لا يمكن معرفة نوع المحتوى - لا يمكن إدراج المحتوى الجديد - لا يمكن فتح دفق إخراج المحتوى - لا يمكن فتح دفق إدخال الصورة - يجب أن يكون هناك عنوان URL للصورة التي تم تحميلها في الاستجابة اسم القناة مجموعتي الرائعة رابط الصورة diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 505558701..b8a45d4c4 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -59,11 +59,6 @@ Erro ao analisar a visualização para %1$s: %2$s Visualize a imagem do cartão para %1$s Novo Canal - Não é possível descobrir o tipo de conteúdo - Não é possível inserir o novo conteúdo - Não é possível abrir o fluxo de saída de conteúdo - Não é possível abrir o fluxo de entrada de imagem - Deve haver um URL de imagem na resposta Nome do Canal Meu grupo Url da foto diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 000000000..ec443deab --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,174 @@ + + Amethyst + Amethyst Debug + Наведите на QR код + Показать QR + Фото профиля + Сканировать QR + Показать + Запись была помечена как неуместная + запись не найдена + Фото канала + Связанное событие не найдено + Не удалось расшифровать сообщение + Фото группы + Откровенное содержание + Спам + Выдача себя за другое лицо + Незаконные действия + Неизвестно + Иконка релея + Неизвестный автор + Скопировать текст + Скопировать ключ пользователя + Скопировать ID записи + Разослать + Блокировать и скрыть пользователя + Сообщить о спаме / мошеничестве + Сообщить о выдаче себя за другое лицо + Сообщить об откровенном содержании + Сообщить о незаконных действиях + Войдите с приватным ключом чтобы ответить + Войдите с приватным ключом чтобы продвигать записи + Войдите с приватным ключом чтобы лайкать записи + Не настроены запы. Нажмите и удерживайте для настройки + Войдите с приватным ключом чтобы запать + Запы + Просмотры + Продвинуть + Цитировать + Новая сумма в sat + Добавить + "в ответ " + " и " + "в канале " + Баннер профиля + " Подписок" + " Подписчиков" + Профиль + Фильтры безопасности + Выйти + Больше + Lightning инвойс + Оплатить + Lightning чаевые + Заметка для получателя + Большое спасибо! + Сумма в sat + Отправить + "Не переводить с " + "Не удалось создать предпросмотр для %1$s : %2$s" + "Предпросмотр для %1$s" + Новый канал + Название канала + Моя новая группа + URL фотографии + Описание + "О нас.. " + Что нового? + Опубликовать + Сохранить + Создать + Отменить + Не удалось загрузить фото + Адрес релея + Записи + Ошибки + Домашняя лента + Лента личных сообщений + Лента чатов + Глобальная лента + Добавить релей + Отображаемое имя + Моё отображаемое имя + Никнейм + Мой никнейм + Обо мне + URL фотографии + URL баннера + URL сайта + LN адрес + LN URL (устаревш.) + Фото сохранено в галерею + Не удалось сохранить фото + Загрузить\nфото + Загрузка… + Пользователь не усталовил Lightning адрес для получения чаевых + "ответить.. " + Копирует ID записи для отправки + Скопировать ID канала (записи) + Редактирует метаданные канала + Войти + Известные + Новые запросы + Заблокированные пользователи + Новые треды + Обсуждения + Записи + Ответы + "Подписок" + "Жалоб" + Больше опций + " Релеев" + Сайт + Lightning адрес + Копирует Nsec ID (ваш пароль) для резервного копирования + Скопировать приватный ключ + Копирует публичный ключ для отправки + Скопировать публичный ключ (NPub) + Отправить сообщение + Редактирует метаданные пользователя + Подписаться + Разблокировать + Скопировать ID пользователя + Разблокировать пользователя + "npub, hex, никнейм " + Очистить + Логотип приложения + nsec / npub / приватный ключ в hex + Показать пароль + Скрыть пароль + Некорректный ключ + "Я принимаю " + условия использования + Нужно принять условия использования + Нужно ввести ключ + Войти + Сгенерировать ключ + Загрузка ленты + "Не удалось загрузить ответы: " + Повторить + Лента пуста. + Обновить + создал(а) + с описанием + и фото + сменил(а) название на + описание на + и фото на + Выйти + Отписаться + Канал создан + Информация о канале изменена на + Публичный чат + записей получено + Удалить + Автоматически + переведено с + на + Показать сперва на + + Всегда переводить на + NIP-05 + LNURL... + никогда + сейчас + ч + м + д + Нагота + Брань / Оскорбления + Сообщить об оскорблениях + Сообщить о наготе / порно + других + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 952cd426c..37cb35f12 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -60,11 +60,6 @@ "Error parsing preview for %1$s : %2$s" "Preview Card Image for %1$s" New Channel - Can\'t find out the content type - Can\'t insert the new content - Can\'t open the content output stream - Can\'t open the image input stream - There must be an uploaded image URL in the response Channel Name My Awesome Group Picture Url