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