Skip to content

Commit 52f6f7a

Browse files
authored
Implement reporting functionality (Google Play AI compliance) (#348)
1 parent f5e92b7 commit 52f6f7a

File tree

39 files changed

+755
-33
lines changed

39 files changed

+755
-33
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ android {
2626
buildConfigField("String", "OPEN_AI_INFO_URL", "\"https://platform.openai.com/api-keys\"")
2727
buildConfigField("String", "STABILITY_AI_INFO_URL", "\"https://platform.stability.ai/\"")
2828
buildConfigField("String", "UPDATE_API_URL", "\"https://sdai.moroz.cc\"")
29+
buildConfigField("String", "REPORT_API_URL", "\"https://sdai-report.moroz.cc\"")
2930
buildConfigField("String", "DEMO_MODE_API_URL", "\"https://sdai.moroz.cc\"")
3031
buildConfigField("String", "POLICY_URL", "\"https://sdai.moroz.cc/policy.html\"")
3132
buildConfigField("String", "DONATE_URL", "\"https://www.buymeacoffee.com/shifthackz\"")

app/src/main/java/com/shifthackz/aisdv1/app/di/ProvidersModule.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ val providersModule = module {
4848
object : ApiUrlProvider {
4949
override val stableDiffusionAutomaticApiUrl: String = DEFAULT_SERVER_URL
5050
override val stableDiffusionAppApiUrl: String = BuildConfig.UPDATE_API_URL
51+
override val stableDiffusionReportApiUrl: String = BuildConfig.REPORT_API_URL
5152
override val hordeApiUrl: String = BuildConfig.HORDE_AI_URL
5253
override val imageCdnApiUrl: String = BuildConfig.IMAGE_CDN_URL
5354
override val huggingFaceApiUrl: String = BuildConfig.HUGGING_FACE_URL

core/localization/src/main/res/values-ru/strings.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,17 @@
361361
<string name="on_boarding_page_local_title">[Офлайн] генерация\nLocal Diffusion.</string>
362362
<string name="on_boarding_page_ui_title">Настройте приложение,\nсделайте его [своим]!</string>
363363
<string name="on_boarding_page_provider_title">[Свобода] выбора\nпровайедра генерации.</string>
364+
365+
<string name="report_title">Пожаловаться</string>
366+
<string name="report_submit">Отправить жалобу</string>
367+
<string name="report_description">Описание жалобы</string>
368+
<string name="report_sent">Ваша жалоба отправлена!</string>
369+
<string name="report_done">Вернуться назад</string>
370+
371+
<string name="report_reason_inappropriate_content">Неподобающий контент</string>
372+
<string name="report_reason_violence">Насилие</string>
373+
<string name="report_reason_hateful_speech">Ненавистнические высказывания</string>
374+
<string name="report_reason_intellectual">Нарушение интеллектуальной собственности</string>
375+
<string name="report_reason_adult">Контент для взрослых</string>
376+
<string name="report_reason_other">Другое</string>
364377
</resources>

core/localization/src/main/res/values-tr/strings.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,17 @@
361361
<string name="on_boarding_page_local_title">[Çevrimdışı] nesil\nYerel Dağıtım.</string>
362362
<string name="on_boarding_page_ui_title">Uygulamayı özelleştirin,\n[kendinizin] yapın!</string>
363363
<string name="on_boarding_page_provider_title">Nesil sağlayıcıyı\nseçme [Özgürlüğü].</string>
364+
365+
<string name="report_title">Görüntüyü Şikayet Et</string>
366+
<string name="report_submit">Şikayeti Gönder</string>
367+
<string name="report_description">Şikayet açıklaması</string>
368+
<string name="report_sent">Şikayetiniz gönderildi!</string>
369+
<string name="report_done">Geri dön</string>
370+
371+
<string name="report_reason_inappropriate_content">Uygunsuz içerik</string>
372+
<string name="report_reason_violence">Şiddet</string>
373+
<string name="report_reason_hateful_speech">Nefret söylemi</string>
374+
<string name="report_reason_intellectual">Fikri mülkiyet ihlali</string>
375+
<string name="report_reason_adult">Yetişkin içeriği</string>
376+
<string name="report_reason_other">Diğer</string>
364377
</resources>

core/localization/src/main/res/values-uk/strings.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,17 @@
361361
<string name="on_boarding_page_local_title">[Офлайн] генерація\nLocal Diffusion.</string>
362362
<string name="on_boarding_page_ui_title">Налаштуйте додаток,\nзробіть його [своїм]!</string>
363363
<string name="on_boarding_page_provider_title">[Свобода] вибору\nпостачальника генерації.</string>
364+
365+
<string name="report_title">Поскаржитись</string>
366+
<string name="report_submit">Надіслати скаргу</string>
367+
<string name="report_description">Опис скарги</string>
368+
<string name="report_sent">Вашу скаргу надіслано!</string>
369+
<string name="report_done">Повернутися назад</string>
370+
371+
<string name="report_reason_inappropriate_content">Неприйнятний вміст</string>
372+
<string name="report_reason_violence">Насильство</string>
373+
<string name="report_reason_hateful_speech">Мовлення ненависті</string>
374+
<string name="report_reason_intellectual">Порушення авторських прав</string>
375+
<string name="report_reason_adult">Контент для дорослих</string>
376+
<string name="report_reason_other">Інше</string>
364377
</resources>

core/localization/src/main/res/values-zh/strings.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,4 +427,17 @@
427427
<string name="on_boarding_page_local_title">[离线]生成\n本地扩散。</string>
428428
<string name="on_boarding_page_ui_title">自定义应用程序,\n让它成为[您的]!</string>
429429
<string name="on_boarding_page_provider_title">[自由]选择\n代提供商。</string>
430+
431+
<string name="report_title">举报图片</string>
432+
<string name="report_submit">提交举报</string>
433+
<string name="report_description">举报描述</string>
434+
<string name="report_sent">您的举报已发送!</string>
435+
<string name="report_done">返回</string>
436+
437+
<string name="report_reason_inappropriate_content">不适当内容</string>
438+
<string name="report_reason_violence">暴力</string>
439+
<string name="report_reason_hateful_speech">仇恨言论</string>
440+
<string name="report_reason_intellectual">知识产权侵犯</string>
441+
<string name="report_reason_adult">成人内容</string>
442+
<string name="report_reason_other">其他</string>
430443
</resources>

core/localization/src/main/res/values/strings.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,4 +388,17 @@
388388
<string name="on_boarding_page_local_title">[Offline] Local Diffusion\nAI generation.</string>
389389
<string name="on_boarding_page_ui_title">Configure, customize,\nmake it [yours]!</string>
390390
<string name="on_boarding_page_provider_title">[Freedom] to choose your\nAI generation provider.</string>
391+
392+
<string name="report_title">Report Image</string>
393+
<string name="report_submit">Submit Report</string>
394+
<string name="report_description">Report description</string>
395+
<string name="report_sent">Your report was sent!</string>
396+
<string name="report_done">Go back</string>
397+
398+
<string name="report_reason_inappropriate_content">Inappropriate content</string>
399+
<string name="report_reason_violence">Violence</string>
400+
<string name="report_reason_hateful_speech">Hateful speech</string>
401+
<string name="report_reason_intellectual">Intellectual property infringement</string>
402+
<string name="report_reason_adult">Adult content</string>
403+
<string name="report_reason_other">Other</string>
391404
</resources>

data/src/main/java/com/shifthackz/aisdv1/data/di/RemoteDataSourceModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.shifthackz.aisdv1.data.remote.HuggingFaceGenerationRemoteDataSource
1010
import com.shifthackz.aisdv1.data.remote.HuggingFaceModelsRemoteDataSource
1111
import com.shifthackz.aisdv1.data.remote.OpenAiGenerationRemoteDataSource
1212
import com.shifthackz.aisdv1.data.remote.RandomImageRemoteDataSource
13+
import com.shifthackz.aisdv1.data.remote.ReportRemoteDataSource
1314
import com.shifthackz.aisdv1.data.remote.ServerConfigurationRemoteDataSource
1415
import com.shifthackz.aisdv1.data.remote.StabilityAiCreditsRemoteDataSource
1516
import com.shifthackz.aisdv1.data.remote.StabilityAiEnginesRemoteDataSource
@@ -34,6 +35,7 @@ import com.shifthackz.aisdv1.domain.datasource.HuggingFaceModelsDataSource
3435
import com.shifthackz.aisdv1.domain.datasource.LorasDataSource
3536
import com.shifthackz.aisdv1.domain.datasource.OpenAiGenerationDataSource
3637
import com.shifthackz.aisdv1.domain.datasource.RandomImageDataSource
38+
import com.shifthackz.aisdv1.domain.datasource.ReportDataSource
3739
import com.shifthackz.aisdv1.domain.datasource.ServerConfigurationDataSource
3840
import com.shifthackz.aisdv1.domain.datasource.StabilityAiCreditsDataSource
3941
import com.shifthackz.aisdv1.domain.datasource.StabilityAiEnginesDataSource
@@ -94,6 +96,7 @@ val remoteDataSourceModule = module {
9496
factoryOf(::StabilityAiGenerationRemoteDataSource) bind StabilityAiGenerationDataSource.Remote::class
9597
factoryOf(::StabilityAiCreditsRemoteDataSource) bind StabilityAiCreditsDataSource.Remote::class
9698
factoryOf(::StabilityAiEnginesRemoteDataSource) bind StabilityAiEnginesDataSource.Remote::class
99+
factoryOf(::ReportRemoteDataSource) bind ReportDataSource.Remote::class
97100

98101
factory<ServerConnectivityGateway> {
99102
val lambda: () -> Boolean = {

data/src/main/java/com/shifthackz/aisdv1/data/di/RepositoryModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.shifthackz.aisdv1.data.repository.LorasRepositoryImpl
1313
import com.shifthackz.aisdv1.data.repository.MediaPipeGenerationRepositoryImpl
1414
import com.shifthackz.aisdv1.data.repository.OpenAiGenerationRepositoryImpl
1515
import com.shifthackz.aisdv1.data.repository.RandomImageRepositoryImpl
16+
import com.shifthackz.aisdv1.data.repository.ReportRepositoryImpl
1617
import com.shifthackz.aisdv1.data.repository.ServerConfigurationRepositoryImpl
1718
import com.shifthackz.aisdv1.data.repository.StabilityAiCreditsRepositoryImpl
1819
import com.shifthackz.aisdv1.data.repository.StabilityAiEnginesRepositoryImpl
@@ -37,6 +38,7 @@ import com.shifthackz.aisdv1.domain.repository.LorasRepository
3738
import com.shifthackz.aisdv1.domain.repository.MediaPipeGenerationRepository
3839
import com.shifthackz.aisdv1.domain.repository.OpenAiGenerationRepository
3940
import com.shifthackz.aisdv1.domain.repository.RandomImageRepository
41+
import com.shifthackz.aisdv1.domain.repository.ReportRepository
4042
import com.shifthackz.aisdv1.domain.repository.ServerConfigurationRepository
4143
import com.shifthackz.aisdv1.domain.repository.StabilityAiCreditsRepository
4244
import com.shifthackz.aisdv1.domain.repository.StabilityAiEnginesRepository
@@ -86,4 +88,5 @@ val repositoryModule = module {
8688
factoryOf(::DownloadableModelRepositoryImpl) bind DownloadableModelRepository::class
8789
factoryOf(::HuggingFaceModelsRepositoryImpl) bind HuggingFaceModelsRepository::class
8890
factoryOf(::SupportersRepositoryImpl) bind SupportersRepository::class
91+
factoryOf(::ReportRepositoryImpl) bind ReportRepository::class
8992
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.shifthackz.aisdv1.data.remote
2+
3+
import com.shifthackz.aisdv1.domain.datasource.ReportDataSource
4+
import com.shifthackz.aisdv1.domain.entity.ReportReason
5+
import com.shifthackz.aisdv1.network.api.sdai.ReportApi
6+
import com.shifthackz.aisdv1.network.request.ReportRequest
7+
import io.reactivex.rxjava3.core.Completable
8+
9+
internal class ReportRemoteDataSource(private val api: ReportApi) : ReportDataSource.Remote {
10+
11+
override fun send(
12+
text: String,
13+
reason: ReportReason,
14+
image: String,
15+
source: String,
16+
model: String
17+
): Completable {
18+
val payload = ReportRequest(text, reason.toString(), image, source, model)
19+
return api.postReport(payload)
20+
}
21+
}

0 commit comments

Comments
 (0)