37 Commits

Author SHA1 Message Date
Balazs Toldi
a8b2091e69 Bump version 2023-08-22 22:18:03 +02:00
Balazs Toldi
f14ebe9a0d Added option to show displayname and hide the instance for comment author names 2023-08-22 22:10:39 +02:00
Balazs Toldi
4010e02438 Fix instance info navigation bar colour 2023-08-22 21:53:08 +02:00
Balazs Toldi
5cbe6152c9 Fix nightly 2023-08-22 21:50:48 +02:00
Balazs Toldi
c7233e05c4 Instance Info page 2023-08-22 21:49:12 +02:00
Bazsalanszky
9d4657dea8 Merge pull request 'Set nightfox as default themes' (#147) from American_Jesus/Infinity-For-Lemmy:feature/default-themes-nightfox into master
Reviewed-on: https://codeberg.org/Bazsalanszky/Eternity/pulls/147
Reviewed-by: Bazsalanszky <bazsalanszky@noreply.codeberg.org>
2023-08-21 18:42:44 +00:00
Bazsalanszky
7c3ddfda5c Merge pull request 'Add new themes Dayfox,Nightfox,Carbonfox' (#146) from American_Jesus/Infinity-For-Lemmy:feature/nightfox-themes into master
Reviewed-on: https://codeberg.org/Bazsalanszky/Eternity/pulls/146
Reviewed-by: Bazsalanszky <bazsalanszky@noreply.codeberg.org>
2023-08-21 18:32:53 +00:00
SomeTr
77f37a5698 Translated using Weblate (Ukrainian)
Currently translated at 99.8% (1243 of 1245 strings)

Translation: Infinity for Lemmy/App
Translate-URL: https://translate.codeberg.org/projects/infinity-for-lemmy/app/uk/
2023-08-21 11:56:44 +00:00
dieserniko
c45528a7f3 Translated using Weblate (German)
Currently translated at 98.3% (1224 of 1245 strings)

Translation: Infinity for Lemmy/App
Translate-URL: https://translate.codeberg.org/projects/infinity-for-lemmy/app/de/
2023-08-21 11:56:44 +00:00
Bazsalanszky
0dcc441bae Change app name 2023-08-21 11:01:08 +02:00
Bazsalanszky
8c05b6e1ea Revert gradle related changes 2023-08-21 10:09:07 +02:00
Bazsalanszky
351033600f Merge remote-tracking branch 'origin/master' 2023-08-21 09:43:47 +02:00
Bazsalanszky
fb4289a812 Bump SDK in build pipeline 2023-08-21 09:43:39 +02:00
Generator
37eb16f6c4 Set nightfox default themes 2023-08-20 20:53:51 +01:00
SomeTr
77c5bcb038 Translated using Weblate (Ukrainian)
Currently translated at 99.5% (1239 of 1244 strings)

Translation: Infinity for Lemmy/App
Translate-URL: https://translate.codeberg.org/projects/infinity-for-lemmy/app/uk/
2023-08-20 19:32:00 +00:00
Balazs Toldi
3c65bfcf1b Better sidebar for community pages 2023-08-20 21:31:40 +02:00
Balazs Toldi
ce7c284c6b Add stats to community "about" tab 2023-08-20 14:51:57 +02:00
Balazs Toldi
267570d7b4 Re-added favorite community functionality
This commit re-adds the ability to mark communities as 'favorites'. This function only works locally as Lemmy does not have an API/functionality for this.
2023-08-20 14:26:03 +02:00
Balazs Toldi
c9e6a0bc2e Fix comment refreshing bug on single thread view
Closes #143
2023-08-20 10:56:41 +02:00
Balazs Toldi
1f8348bbfa Merge remote-tracking branch 'codeberg/master' 2023-08-20 10:33:16 +02:00
Balazs Toldi
d4fe5235e2 Fix opening Image view activity from embedded images 2023-08-20 10:33:10 +02:00
Balazs Toldi
76fee50cd5 Do not show statistics block while loading 2023-08-20 10:24:09 +02:00
SomeTr
e2956e3f1c Translated using Weblate (Ukrainian)
Currently translated at 99.1% (1230 of 1241 strings)

Translation: Infinity for Lemmy/App
Translate-URL: https://translate.codeberg.org/projects/infinity-for-lemmy/app/uk/
2023-08-19 20:25:36 +00:00
American_Jesus
21b0b36359 Translated using Weblate (Portuguese)
Currently translated at 98.3% (1221 of 1241 strings)

Translation: Infinity for Lemmy/App
Translate-URL: https://translate.codeberg.org/projects/infinity-for-lemmy/app/pt/
2023-08-19 20:25:36 +00:00
Fjuro
a55820a11d Translated using Weblate (Czech)
Currently translated at 100.0% (1241 of 1241 strings)

Translation: Infinity for Lemmy/App
Translate-URL: https://translate.codeberg.org/projects/infinity-for-lemmy/app/cs/
2023-08-19 20:25:36 +00:00
Balazs Toldi
3322b5b4e8 Add option to disable statistics block and post/comment score
As per users requested, I've added two options to the interface section:
1. Disable statistics (under users and community pages): Disables the statistics block on user/community pages
2. Disable post and comment scores: Disables the post and comment scores show on users pages
2023-08-19 22:25:26 +02:00
Balazs Toldi
0384914c16 Readded instance switcher to navbar for anonymous accounts 2023-08-19 16:57:08 +02:00
Balazs Toldi
0550219d58 Fix Streamable videos 2023-08-19 16:46:46 +02:00
Balazs Toldi
deaa4e596d Fix switch account toast when opening a notification
Closes #100
2023-08-19 16:36:22 +02:00
Balazs Toldi
bf1036c919 Fix crash when exiting ot of profile page while loading 2023-08-19 15:35:18 +02:00
Balazs Toldi
116deebf87 Use application context for MarkdownUtils 2023-08-18 23:35:33 +02:00
Balazs Toldi
0f3197d7e4 Use application context for Glide 2023-08-18 23:35:21 +02:00
Balazs Toldi
db9edc47c0 Merge changes 2023-08-18 22:14:47 +02:00
Balazs Toldi
2392d9fa29 Merge remote-tracking branch 'codeberg/master' 2023-08-18 21:51:38 +02:00
Balazs Toldi
3272f609a8 Potential fix for crash when closing a comment too fast 2023-08-18 21:51:30 +02:00
Bazsalanszky
bbbd4ddcb0 Merge pull request 'Basic Private messages' (#119) from feature/privatemessages into master
Reviewed-on: https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy/pulls/119
2023-08-18 13:57:19 +00:00
Generator
a245ebad09 add new themes Dayfox,Nightfox,Carbonfox 2023-08-18 14:39:52 +01:00
94 changed files with 2350 additions and 512 deletions

View File

@@ -23,7 +23,7 @@ steps:
- cd repoconfig
- pwd
- git clone --depth 1 https://codeberg.org/Bazsalanszky/fdroid-repo-config
- cp /woodpecker/src/codeberg.org/Bazsalanszky/Infinity-For-Lemmy/eu.toldi.infinityforlemmy.nightly.apk fdroid-repo-config/repo/
- cp /woodpecker/src/codeberg.org/Bazsalanszky/Eternity/eu.toldi.infinityforlemmy.nightly.apk fdroid-repo-config/repo/
pull-pages:
image: codeberg.org/freeyourgadget/android-fdroid-tools:latest

View File

@@ -1,5 +1,5 @@
<h1 align="center">
Infinity for Lemmy
Eternity (formerly Infinity for Lemmy)
</h1>
<div align="center">
@@ -30,9 +30,9 @@ A Lemmy client for Android written in Java. It's a fork of the [Infinity for Red
---
## Action Items for Infinity for Lemmy
## Action Items for Eternity
Infinity for Lemmy is currently in the early stages of development. Expect many unfinished features and bugs!
Eternity is currently in the early stages of development. Expect many unfinished features and bugs!
- [x] Implementation of basic post browsing feature
- [x] Support for multiple account handling
@@ -43,7 +43,7 @@ Infinity for Lemmy is currently in the early stages of development. Expect many
- [x] Edit/Delete posts and comments
- [x] Basic inbox
- [ ] Elimination of code/string references specific to Reddit
- [ ] Incorporation of private messaging feature
- [x] Incorporation of private messaging feature
- [x] Feature for saving posts/comments
- [x] Resolving links
- [ ] Account editing function
@@ -66,7 +66,7 @@ Don't forget to give the project a star! Thanks again!
### Translation
You can alos help Infinity for Lemmy by translating it to your native langugage! Translations are done via [Weblate](https://translate.codeberg.org/projects/infinity-for-lemmy/app/)!
You can alos help Eternity by translating it to your native langugage! Translations are done via [Weblate](https://translate.codeberg.org/projects/infinity-for-lemmy/app/)!
[![Translation](https://translate.codeberg.org/widgets/infinity-for-lemmy/-/app/multi-auto.svg)](https://translate.codeberg.org/engage/infinity-for-lemmy/)

View File

@@ -21,8 +21,8 @@ android {
applicationId "eu.toldi.infinityforlemmy"
minSdk 21
targetSdk 33
versionCode 128
versionName "0.0.8"
versionCode 129
versionName "0.1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
@@ -108,6 +108,7 @@ dependencies {
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
def lifecycleVersion = "2.5.1"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycleVersion"
@@ -153,6 +154,7 @@ dependencies {
implementation "com.google.dagger:dagger:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
// Binding
// NOTE: Deprecated in favor of viewbinding
def butterknifeVersion = "10.2.3"

View File

@@ -1,3 +1,3 @@
<resources>
<string name="application_name" translatable="false">Infinity for Lemmy (Debug)</string>
<string name="application_name" translatable="false">Eternity (Debug)</string>
</resources>

View File

@@ -22,8 +22,7 @@
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:name=".Infinity"
@@ -35,6 +34,12 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:replace="android:label">
<activity
android:name=".activities.InstanceInfoActivity"
android:label="@string/instance_info"
android:configChanges="orientation|screenLayout|screenSize|layoutDirection"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.HistoryActivity"
android:exported="false"
@@ -469,7 +474,6 @@
android:name=".activities.ViewUserDetailActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"

View File

@@ -2,6 +2,8 @@ package eu.toldi.infinityforlemmy;
import android.app.Application;
import org.jetbrains.annotations.NotNull;
import javax.inject.Singleton;
import dagger.BindsInstance;
@@ -25,6 +27,7 @@ import eu.toldi.infinityforlemmy.activities.FullMarkdownActivity;
import eu.toldi.infinityforlemmy.activities.GiveAwardActivity;
import eu.toldi.infinityforlemmy.activities.HistoryActivity;
import eu.toldi.infinityforlemmy.activities.InboxActivity;
import eu.toldi.infinityforlemmy.activities.InstanceInfoActivity;
import eu.toldi.infinityforlemmy.activities.LinkResolverActivity;
import eu.toldi.infinityforlemmy.activities.LockScreenActivity;
import eu.toldi.infinityforlemmy.activities.LoginActivity;
@@ -322,6 +325,8 @@ public interface AppComponent {
void inject(PrivateMessageFragment privateMessageFragment);
void inject(@NotNull InstanceInfoActivity instanceInfoActivity);
@Component.Factory
interface Factory {
AppComponent create(@BindsInstance Application application);

View File

@@ -20,6 +20,7 @@ import retrofit2.Response;
public class FetchStreamableVideo {
public interface FetchStreamableVideoListener {
void success(StreamableVideo streamableVideo);
void failed();
}
@@ -33,7 +34,12 @@ public class FetchStreamableVideo {
String title = jsonObject.getString(JSONUtils.TITLE_KEY);
JSONObject filesObject = jsonObject.getJSONObject(JSONUtils.FILES_KEY);
StreamableVideo.Media mp4 = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_KEY));
StreamableVideo.Media mp4Mobile = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
StreamableVideo.Media mp4MobileTemp = null;
try {
mp4MobileTemp = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
} catch (JSONException e) {
}
StreamableVideo.Media mp4Mobile = mp4MobileTemp;
handler.post(() -> fetchStreamableVideoListener.success(new StreamableVideo(title, mp4, mp4Mobile)));
} else {
handler.post(fetchStreamableVideoListener::failed);
@@ -55,7 +61,12 @@ public class FetchStreamableVideo {
String title = jsonObject.getString(JSONUtils.TITLE_KEY);
JSONObject filesObject = jsonObject.getJSONObject(JSONUtils.FILES_KEY);
StreamableVideo.Media mp4 = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_KEY));
StreamableVideo.Media mp4Mobile = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
StreamableVideo.Media mp4MobileTemp = null;
try {
mp4MobileTemp = parseMedia(filesObject.getJSONObject(JSONUtils.MP4_MOBILE_KEY));
} catch (JSONException e) {
}
StreamableVideo.Media mp4Mobile = mp4MobileTemp;
if (mp4 == null && mp4Mobile == null) {
handler.post(fetchStreamableVideoListener::failed);
return;

View File

@@ -111,7 +111,7 @@ class ParseSubscribedThing {
int instanceId = community.getInt("instance_id");
int subscribers = data.getJSONObject("counts").getInt("subscribers");
boolean isBlocked = data.getBoolean("blocked");
newSubscribedSubredditData.add(new SubscribedSubredditData(id, title, LemmyUtils.actorID2FullName(actorId), iconUrl, accountName));
newSubscribedSubredditData.add(new SubscribedSubredditData(id, title, LemmyUtils.actorID2FullName(actorId), iconUrl, accountName, false));
newSubredditData.add(new SubredditData(id, name, title, description, removed, published, updated, deleted, nsfw, actorId, local, iconUrl, bannerImageUrl, hidden, postingRestrictedToMods, instanceId, subscribers, isBlocked));
}

View File

@@ -42,7 +42,7 @@ import eu.toldi.infinityforlemmy.user.UserData;
@Database(entities = {Account.class, SubredditData.class, SubscribedSubredditData.class, UserData.class,
SubscribedUserData.class, MultiReddit.class, CustomTheme.class, RecentSearchQuery.class,
ReadPost.class, PostFilter.class, PostFilterUsage.class, AnonymousMultiredditSubreddit.class, BlockedUserData.class, BlockedCommunityData.class}, version = 26)
ReadPost.class, PostFilter.class, PostFilterUsage.class, AnonymousMultiredditSubreddit.class, BlockedUserData.class, BlockedCommunityData.class}, version = 27)
public abstract class RedditDataRoomDatabase extends RoomDatabase {
public static RedditDataRoomDatabase create(final Context context) {
@@ -53,7 +53,7 @@ public abstract class RedditDataRoomDatabase extends RoomDatabase {
MIGRATION_9_10, MIGRATION_10_11, MIGRATION_11_12, MIGRATION_12_13,
MIGRATION_13_14, MIGRATION_14_15, MIGRATION_15_16, MIGRATION_16_17,
MIGRATION_17_18, MIGRATION_18_19, MIGRATION_19_20, MIGRATION_20_21,
MIGRATION_21_22, MIGRATION_22_23, MIGRATION_23_24, MIGRATION_24_25, MIGRATION_25_26)
MIGRATION_21_22, MIGRATION_22_23, MIGRATION_23_24, MIGRATION_24_25, MIGRATION_25_26, MIGRATION_26_27)
.build();
}
@@ -416,4 +416,12 @@ public abstract class RedditDataRoomDatabase extends RoomDatabase {
}
};
private static final Migration MIGRATION_26_27 = new Migration(26, 27) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE subscribed_subreddits"
+ " ADD COLUMN is_favorite INTEGER DEFAULT 0 NOT NULL");
}
};
}

View File

@@ -226,7 +226,7 @@ public class CommentActivity extends BaseActivity implements UploadImageEnabledA
setSupportActionBar(binding.commentToolbar);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
if (savedInstanceState != null) {
selectedAccount = savedInstanceState.getParcelable(SELECTED_ACCOUNT_STATE);

View File

@@ -172,7 +172,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
contentEditText.setText(mPost.getSelfText());
linkEditText.setText(mPost.getUrl());
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
if (mPost.getUrl() != null && mPost.getUrl().matches(picturePattern)) {
loadImage();
@@ -354,7 +354,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
Uri imageUri = data.getData();
mExecutor.execute(() -> {
try {
Bitmap bitmap = Glide.with(this).asBitmap().load(imageUri).submit().get();
Bitmap bitmap = Glide.with(getApplication()).asBitmap().load(imageUri).submit().get();
String imageUrlOrError = UploadImageUtils.uploadImage(mRetrofit, mAccessToken, bitmap);
handler.post(() -> {
if (imageUrlOrError != null && !imageUrlOrError.startsWith("Error: ")) {

View File

@@ -38,7 +38,6 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
@@ -52,6 +51,7 @@ import eu.toldi.infinityforlemmy.user.UserViewModel;
import eu.toldi.infinityforlemmy.utils.EditProfileUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit;
@@ -135,7 +135,7 @@ public class EditProfileActivity extends BaseActivity {
startPickImage(PICK_IMAGE_AVATAR_REQUEST_CODE);
});
final RequestManager glide = Glide.with(this);
final RequestManager glide = Glide.with(getApplication());
final UserViewModel.Factory userViewModelFactory =
new UserViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName);
final UserViewModel userViewModel =

View File

@@ -29,12 +29,6 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonPlugin;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.recycler.MarkwonAdapter;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
@@ -45,6 +39,12 @@ import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.events.SwitchAccountEvent;
import eu.toldi.infinityforlemmy.markdown.MarkdownUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonPlugin;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.recycler.MarkwonAdapter;
public class FullMarkdownActivity extends BaseActivity {

View File

@@ -0,0 +1,228 @@
package eu.toldi.infinityforlemmy.activities;
import android.content.SharedPreferences;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.card.MaterialCardView;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.adapters.AdminRecyclerViewAdapter;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.databinding.ActivityInstanceInfoBinding;
import eu.toldi.infinityforlemmy.markdown.MarkdownUtils;
import eu.toldi.infinityforlemmy.site.FetchSiteInfo;
import eu.toldi.infinityforlemmy.site.SiteInfo;
import eu.toldi.infinityforlemmy.site.SiteStatistics;
import eu.toldi.infinityforlemmy.user.BasicUserInfo;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.recycler.MarkwonAdapter;
public class InstanceInfoActivity extends BaseActivity {
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@Inject
CustomThemeWrapper mCustomThemeWrapper;
@Inject
@Named("no_oauth")
RetrofitHolder mRetorifitHolder;
ActivityInstanceInfoBinding mInstanceInfoActivityViewBinding;
private CoordinatorLayout coordinatorLayout;
private Toolbar toolbar;
private AppBarLayout appBarLayout;
private ConstraintLayout mLoadingConstraintLayout;
private MaterialCardView mStatisticsCardView;
private TextView mUsersTextView;
private TextView mCommunitiesTextView;
private TextView mPostsTextView;
private TextView mCommentsTextView;
private TextView mActiveUsersTextView;
private ImageView mUsersImageView;
private ImageView mCommunitiesImageView;
private ImageView mPostsImageView;
private ImageView mCommentsImageView;
private ImageView mActiveUsersImageView;
private MaterialCardView mDescriptionCardView;
private RecyclerView mContentMarkdownView;
private RecyclerView mAdminsRecyclerView;
private MaterialCardView mAdminsCardView;
private MarkwonAdapter mMarkwonAdapter;
private Markwon mPostDetailMarkwon;
private AdminRecyclerViewAdapter mAdminAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
((Infinity) getApplication()).getAppComponent().inject(this);
super.onCreate(savedInstanceState);
mInstanceInfoActivityViewBinding = ActivityInstanceInfoBinding.inflate(getLayoutInflater());
View view = mInstanceInfoActivityViewBinding.getRoot();
setImmersiveModeNotApplicable();
setContentView(view);
setSupportActionBar(mInstanceInfoActivityViewBinding.toolbarInstanceInfoActivity);
setUpBindings();
applyCustomTheme();
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_RIGHT_TO_GO_BACK, true)) {
Slidr.attach(this);
}
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Remove transparency from navigation bar
getWindow().setNavigationBarColor(mCustomThemeWrapper.getBackgroundColor());
int markdownColor = customThemeWrapper.getPostContentColor();
int postSpoilerBackgroundColor = markdownColor | 0xFF000000;
int linkColor = customThemeWrapper.getLinkColor();
mPostDetailMarkwon = MarkdownUtils.createFullRedditMarkwon(this,
new AbstractMarkwonPlugin() {
}, markdownColor, postSpoilerBackgroundColor, null);
mMarkwonAdapter = MarkdownUtils.createTablesAdapter();
mContentMarkdownView.setAdapter(mMarkwonAdapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
mContentMarkdownView.setLayoutManager(linearLayoutManager);
mAdminAdapter = new AdminRecyclerViewAdapter(InstanceInfoActivity.this, customThemeWrapper);
mAdminsRecyclerView.setLayoutManager(new LinearLayoutManagerBugFixed(InstanceInfoActivity.this));
mAdminsRecyclerView.setAdapter(mAdminAdapter);
fetchInstanceInfo();
}
@Override
protected void onStart() {
super.onStart();
fetchInstanceInfo();
}
private void fetchInstanceInfo() {
FetchSiteInfo.fetchSiteInfo(mRetorifitHolder.getRetrofit(), null, new FetchSiteInfo.FetchSiteInfoListener() {
@Override
public void onFetchSiteInfoSuccess(SiteInfo siteInfo) {
mLoadingConstraintLayout.setVisibility(View.GONE);
toolbar.setTitle(siteInfo.getName());
if (siteInfo.getSidebar() != null) {
mMarkwonAdapter.setMarkdown(mPostDetailMarkwon, siteInfo.getSidebar());
Log.i("SiteInfo", "onFetchSiteInfoSuccess: " + siteInfo.getSidebar());
// noinspection NotifyDataSetChanged
mMarkwonAdapter.notifyDataSetChanged();
mDescriptionCardView.setVisibility(View.VISIBLE);
}
List<BasicUserInfo> admins = siteInfo.getAdmins();
if (admins != null && !admins.isEmpty()) {
mAdminsCardView.setVisibility(View.VISIBLE);
mAdminAdapter.setUsers(admins);
}
SiteStatistics siteStatistics = siteInfo.getSiteStatistics();
if (siteStatistics != null) {
mStatisticsCardView.setVisibility(View.VISIBLE);
mUsersTextView.setText(getString(R.string.user_number_detail, siteStatistics.getUsers()));
mCommunitiesTextView.setText(getString(R.string.community_number_detail, siteStatistics.getCommunities()));
mPostsTextView.setText(getString(R.string.post_count_detail, siteStatistics.getPosts()));
mCommentsTextView.setText(getString(R.string.comment_count_detail, siteStatistics.getComments()));
mActiveUsersTextView.setText(getString(R.string.active_users_number_detail, siteStatistics.getUsers_active()));
}
}
@Override
public void onFetchSiteInfoFailed() {
}
});
}
protected void setUpBindings() {
coordinatorLayout = mInstanceInfoActivityViewBinding.coordinatorLayoutInstanceInfoActivity;
toolbar = mInstanceInfoActivityViewBinding.toolbarInstanceInfoActivity;
appBarLayout = mInstanceInfoActivityViewBinding.appbarLayoutInstanceInfoActivity;
mStatisticsCardView = mInstanceInfoActivityViewBinding.statisticsCardInstanceInfoActivity;
mDescriptionCardView = mInstanceInfoActivityViewBinding.descriptionCardInstanceInfoActivity;
mContentMarkdownView = mInstanceInfoActivityViewBinding.markdownRecyclerViewInstanceInfoActivity;
mAdminsCardView = mInstanceInfoActivityViewBinding.moderatorsCardInstanceInfoActivity;
mLoadingConstraintLayout = mInstanceInfoActivityViewBinding.loadingLayoutInstanceInfoActivity;
mAdminsRecyclerView = mInstanceInfoActivityViewBinding.recyclerViewAdminsInstanceInfoActivity;
mUsersTextView = mInstanceInfoActivityViewBinding.registeredUserCountTextViewInstanceInfoActivity;
mCommunitiesTextView = mInstanceInfoActivityViewBinding.communityCountInstanceInfoActivity;
mPostsTextView = mInstanceInfoActivityViewBinding.postCountTextViewInstanceInfoActivity;
mCommentsTextView = mInstanceInfoActivityViewBinding.commentCountTextViewInstanceInfoActivity;
mActiveUsersTextView = mInstanceInfoActivityViewBinding.activeUserCountTextViewInstanceInfoActivity;
mUsersImageView = mInstanceInfoActivityViewBinding.registeredUserCountImageViewInstanceInfoActivity;
mCommunitiesImageView = mInstanceInfoActivityViewBinding.communitiesIconImageViewInstanceInfoActivity;
mPostsImageView = mInstanceInfoActivityViewBinding.postCountImageViewInstanceInfoActivity;
mCommentsImageView = mInstanceInfoActivityViewBinding.commentCountImageViewInstanceInfoActivity;
mActiveUsersImageView = mInstanceInfoActivityViewBinding.activeUserCountImageViewInstanceInfoActivity;
}
@Override
protected SharedPreferences getDefaultSharedPreferences() {
return mSharedPreferences;
}
@Override
protected CustomThemeWrapper getCustomThemeWrapper() {
return mCustomThemeWrapper;
}
@Override
protected void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, null, toolbar);
mUsersImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
mCommunitiesImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
mPostsImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
mCommentsImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
mActiveUsersImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
mUsersTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
mCommunitiesTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
mPostsTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
mCommentsTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
mActiveUsersTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return false;
}
}

View File

@@ -882,9 +882,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
});
} else if (stringId == R.string.anonymous_account_instance) {
changeAnonymousAccountInstance();
} else if (stringId == R.string.blocks) {
intent = new Intent(MainActivity.this, BlockedThingListingActivity.class);
}
} else if (stringId == R.string.blocks) {
intent = new Intent(MainActivity.this, BlockedThingListingActivity.class);
} else if (stringId == R.string.instance_info) {
intent = new Intent(MainActivity.this, InstanceInfoActivity.class);
}
if (intent != null) {
startActivity(intent);
}
@@ -1011,12 +1013,12 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
sectionsPagerAdapter.setSubscribedSubreddits(subscribedSubredditData);
}
});
/*subscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(this, subscribedSubredditData -> {
subscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(this, subscribedSubredditData -> {
adapter.setFavoriteSubscribedSubreddits(subscribedSubredditData);
if (mShowFavoriteSubscribedSubreddits && sectionsPagerAdapter != null) {
sectionsPagerAdapter.setFavoriteSubscribedSubreddits(subscribedSubredditData);
}
});*/
});
accountViewModel = new ViewModelProvider(this,
new AccountViewModel.Factory(mRedditDataRoomDatabase)).get(AccountViewModel.class);

View File

@@ -214,7 +214,7 @@ public class PostGalleryActivity extends BaseActivity implements FlairBottomShee
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);

View File

@@ -228,7 +228,7 @@ public class PostImageActivity extends BaseActivity implements FlairBottomSheetF
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);

View File

@@ -217,7 +217,7 @@ public class PostLinkActivity extends BaseActivity implements FlairBottomSheetFr
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);

View File

@@ -219,7 +219,7 @@ public class PostPollActivity extends BaseActivity implements FlairBottomSheetFr
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);

View File

@@ -208,7 +208,7 @@ public class PostTextActivity extends BaseActivity implements FlairBottomSheetFr
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);

View File

@@ -216,7 +216,7 @@ public class PostVideoActivity extends BaseActivity implements FlairBottomSheetF
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
player = new ExoPlayer.Builder(this).build();
videoPlayerView.setPlayer(player);

View File

@@ -204,7 +204,7 @@ public class SubmitCrosspostActivity extends BaseActivity implements FlairBottom
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);

View File

@@ -127,7 +127,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
mSwipeRefreshLayout.setEnabled(false);

View File

@@ -152,7 +152,7 @@ public class TrendingActivity extends BaseActivity {
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
@@ -201,7 +201,7 @@ public class TrendingActivity extends BaseActivity {
isRefreshing = true;
errorLinearLayout.setVisibility(View.GONE);
Glide.with(this).clear(errorImageView);
Glide.with(getApplication()).clear(errorImageView);
swipeRefreshLayout.setRefreshing(true);
trendingSearches = null;
adapter.setTrendingSearches(null);

View File

@@ -161,7 +161,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa
Slidr.attach(this, new SlidrConfig.Builder().position(SlidrPosition.VERTICAL).distanceThreshold(0.125f).build());
}
glide = Glide.with(this);
glide = Glide.with(getApplication());
handler = new Handler();

View File

@@ -181,6 +181,8 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
private SectionsPagerAdapter sectionsPagerAdapter;
private String mAccessToken;
private String mAccountName;
private String mAccountQalifiedName;
private long postFragmentId;
private int postListPosition;
private int orientation;
@@ -269,6 +271,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, null);
mAccountQalifiedName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, null);
mVolumeKeysNavigateComments = mSharedPreferences.getBoolean(SharedPreferencesUtils.VOLUME_KEYS_NAVIGATE_COMMENTS, false);
@@ -353,8 +356,8 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
private void checkNewAccountAndBindView(Bundle savedInstanceState) {
if (mNewAccountName != null) {
if (mAccountName == null || !mAccountName.equals(mNewAccountName)) {
SwitchAccount.switchAccount(mRedditDataRoomDatabase,mRetrofit, mCurrentAccountSharedPreferences,
if (mAccountName == null || !mAccountQalifiedName.equals(mNewAccountName)) {
SwitchAccount.switchAccount(mRedditDataRoomDatabase, mRetrofit, mCurrentAccountSharedPreferences,
mExecutor, new Handler(), mNewAccountName, newAccount -> {
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();

View File

@@ -27,6 +27,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
@@ -184,6 +185,9 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
@BindView(R.id.comment_count_image_view_view_subreddit_detail_activity)
ImageView nCommentsImageView;
@BindView(R.id.community_statistics_block_view_subreddit_detail_activity)
ConstraintLayout communityStatisticsBlock;
@BindView(R.id.description_text_view_view_subreddit_detail_activity)
TextView descriptionTextView;
@@ -257,6 +261,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
private int fabOption;
private MaterialAlertDialogBuilder nsfwWarningBuilder;
private boolean showStatistics;
private boolean hideSubredditDescription;
@Override
@@ -270,6 +276,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
ButterKnife.bind(this);
hideFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.HIDE_FAB_IN_POST_FEED, false);
showStatistics = mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_STATISTICS, true);
showBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.BOTTOM_APP_BAR_KEY, false);
navigationWrapper = new NavigationWrapper(findViewById(R.id.bottom_app_bar_bottom_app_bar), findViewById(R.id.linear_layout_bottom_app_bar),
findViewById(R.id.option_1_bottom_app_bar), findViewById(R.id.option_2_bottom_app_bar),
@@ -506,7 +513,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
setSupportActionBar(toolbar);
setToolbarGoToTop(toolbar);
glide = Glide.with(this);
glide = Glide.with(getApplication());
Locale locale = getResources().getConfiguration().locale;
MarkwonPlugin miscPlugin = new AbstractMarkwonPlugin() {
@@ -592,17 +599,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
String nSubscribers = getString(R.string.subscribers_number_detail, subredditData.getNSubscribers());
nSubscribersTextView.setText(nSubscribers);
if (mCommunityStats != null) {
if (mCommunityStats != null && showStatistics) {
communityStatisticsBlock.setVisibility(View.VISIBLE);
nActiveUsersTextView.setText(getString(R.string.active_users_number_detail, mCommunityStats.getActiveUsers()));
nPostsTextView.setText(getString(R.string.post_count_detail, mCommunityStats.getPosts()));
nCommentsTextView.setText(getString(R.string.comment_count_detail, mCommunityStats.getComments()));
} else {
nActiveUsersTextView.setVisibility(View.GONE);
nPostsTextView.setVisibility(View.GONE);
nCommentsTextView.setVisibility(View.GONE);
nActiveUsersImageView.setVisibility(View.GONE);
nPostsImageView.setVisibility(View.GONE);
nCommentsImageView.setVisibility(View.GONE);
}
description = subredditData.getDescription();
@@ -1690,6 +1691,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
bundle.putString(SidebarFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
bundle.putString(SidebarFragment.EXTRA_SUBREDDIT_NAME, communityName);
bundle.putString(SidebarFragment.EXTRA_COMMUNITY_QUALIFIED_NAME, qualifiedName);
bundle.putBoolean(SidebarFragment.EXTRA_SHOW_STATISTICS, !showStatistics);
fragment.setArguments(bundle);
return fragment;
}

View File

@@ -29,6 +29,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
@@ -197,9 +198,17 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
ImageView postsCountIconImageView;
@BindView(R.id.comments_count_icon_image_view_view_user_detail_activity)
ImageView commentsCountIconImageView;
@BindView(R.id.upvote_count_posts_icon_image_view_view_user_detail_activity)
ImageView postUpvoteCountIconImageView;
@BindView(R.id.upvote_count_comments_icon_image_view_view_user_detail_activity)
ImageView commentUpvoteCountIconImageView;
@BindView(R.id.account_created_cake_icon_image_view_view_user_detail_activity)
ImageView accountCreatedCakeIconImageView;
@BindView(R.id.user_statistics_block_view_user_detail_activity)
ConstraintLayout userStatisticsBlock;
@BindView(R.id.cake_day_text_view_view_user_detail_activity)
TextView cakedayTextView;
@BindView(R.id.description_text_view_view_user_detail_activity)
@@ -250,6 +259,9 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
private String qualifiedName;
private String description;
private boolean showStatistics;
private boolean showScore;
private boolean subscriptionReady = false;
private boolean mFetchUserInfoSuccess = false;
private int expandedTabTextColor;
@@ -314,6 +326,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
mAccountQualifiedName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, null);
lockBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.LOCK_BOTTOM_APP_BAR, false);
showStatistics = mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_STATISTICS, true);
showScore = mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_POST_AND_COMMENT_SCORE, true);
if (savedInstanceState == null) {
mMessageId = getIntent().getIntExtra(EXTRA_MESSAGE_FULLNAME, 0);
@@ -434,7 +448,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
});
}
glide = Glide.with(this);
glide = Glide.with(getApplication());
Locale locale = getResources().getConfiguration().locale;
MarkwonPlugin miscPlugin = new AbstractMarkwonPlugin() {
@@ -614,11 +628,19 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
cakedayTextView.setText((String) userData.getCakeday());
UserStats userStats = mUserData.getStats();
if (userStats != null) {
if (userStats != null && showStatistics) {
userStatisticsBlock.setVisibility(View.VISIBLE);
postCountTextView.setText(String.valueOf(userStats.getPostCount()));
commentCountTextView.setText(String.valueOf(userStats.getCommentCount()));
upvoteCountPostTextView.setText(String.valueOf(userStats.getPostScore()));
upvoteCountCommentTextView.setText(String.valueOf(userStats.getCommentScore()));
if (showScore) {
upvoteCountPostTextView.setText(String.valueOf(userStats.getPostScore()));
upvoteCountCommentTextView.setText(String.valueOf(userStats.getCommentScore()));
} else {
upvoteCountPostTextView.setVisibility(View.GONE);
upvoteCountCommentTextView.setVisibility(View.GONE);
postUpvoteCountIconImageView.setVisibility(View.GONE);
commentUpvoteCountIconImageView.setVisibility(View.GONE);
}
}
if (userData.getDescription() == null || userData.getDescription().equals("")) {

View File

@@ -35,16 +35,9 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonPlugin;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.recycler.MarkwonAdapter;
import me.saket.bettermovementmethod.BetterLinkMovementMethod;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.apis.RedditAPI;
import eu.toldi.infinityforlemmy.bottomsheetfragments.UrlMenuBottomSheetFragment;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
@@ -57,10 +50,16 @@ import eu.toldi.infinityforlemmy.markdown.MarkdownUtils;
import eu.toldi.infinityforlemmy.utils.JSONUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonPlugin;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.recycler.MarkwonAdapter;
import me.saket.bettermovementmethod.BetterLinkMovementMethod;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
public class WikiActivity extends BaseActivity {
@@ -139,7 +138,7 @@ public class WikiActivity extends BaseActivity {
}
}
mGlide = Glide.with(this);
mGlide = Glide.with(getApplication());
swipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true));
swipeRefreshLayout.setOnRefreshListener(this::loadWiki);
@@ -219,7 +218,7 @@ public class WikiActivity extends BaseActivity {
swipeRefreshLayout.setRefreshing(true);
Glide.with(this).clear(mFetchWikiInfoImageView);
Glide.with(getApplication()).clear(mFetchWikiInfoImageView);
mFetchWikiInfoLinearLayout.setVisibility(View.GONE);
retrofit.getRetrofit().create(RedditAPI.class).getWikiPage(getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME), getIntent().getStringExtra(EXTRA_WIKI_PATH)).enqueue(new Callback<String>() {

View File

@@ -0,0 +1,22 @@
package eu.toldi.infinityforlemmy.adapters;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.user.BasicUserRecyclerViewAdapter;
public class AdminRecyclerViewAdapter extends BasicUserRecyclerViewAdapter {
CustomThemeWrapper mCustomThemeWrapper;
public AdminRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper) {
super(activity, customThemeWrapper);
mCustomThemeWrapper = customThemeWrapper;
}
@Override
protected int getUserNameTextColor() {
return mCustomThemeWrapper.getAdmin();
}
}

View File

@@ -450,7 +450,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
Comment comment = getItem(getBindingAdapterPosition());
if (comment != null) {
Bundle bundle = new Bundle();
if (comment.getAuthor().equals(mAccountName)) {
if (comment.getAuthorName().equals(mAccountName)) {
bundle.putBoolean(CommentMoreBottomSheetFragment.EXTRA_EDIT_AND_DELETE_AVAILABLE, true);
}
bundle.putString(CommentMoreBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);

View File

@@ -39,10 +39,12 @@ import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.regex.Pattern;
import butterknife.BindView;
import butterknife.ButterKnife;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.SaveComment;
import eu.toldi.infinityforlemmy.SaveThing;
import eu.toldi.infinityforlemmy.SortType;
@@ -95,7 +97,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
private BaseActivity mActivity;
private ViewPostDetailFragment mFragment;
private Executor mExecutor;
private Retrofit mRetrofit;
private RetrofitHolder mRetrofit;
private Retrofit mOauthRetrofit;
private Markwon mCommentMarkwon;
private String mAccessToken;
@@ -134,6 +136,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
private boolean isInitiallyLoadingFailed;
private boolean mHasMoreComments;
private boolean loadMoreCommentsFailed;
private boolean mHideUserInstance;
private boolean mShowUserDisplayName;
private Drawable expandDrawable;
private Drawable collapseDrawable;
@@ -165,7 +170,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
public CommentsRecyclerViewAdapter(BaseActivity activity, ViewPostDetailFragment fragment,
CustomThemeWrapper customThemeWrapper,
Executor executor, Retrofit retrofit,
Executor executor, RetrofitHolder retrofit,
String accessToken, String accountName,
Post post, Locale locale, Integer singleCommentId,
boolean isSingleCommentThreadMode,
@@ -176,7 +181,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
mFragment = fragment;
mExecutor = executor;
mRetrofit = retrofit;
mGlide = Glide.with(activity);
mGlide = Glide.with(activity.getApplicationContext());
mSecondaryTextColor = customThemeWrapper.getSecondaryTextColor();
mCommentTextColor = customThemeWrapper.getCommentColor();
int commentSpoilerBackgroundColor = mCommentTextColor | 0xFF000000;
@@ -242,6 +247,8 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
mShowAuthorAvatar = sharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_AUTHOR_AVATAR, false);
mAlwaysShowChildCommentCount = sharedPreferences.getBoolean(SharedPreferencesUtils.ALWAYS_SHOW_CHILD_COMMENT_COUNT, false);
mHideTheNumberOfVotes = sharedPreferences.getBoolean(SharedPreferencesUtils.HIDE_THE_NUMBER_OF_VOTES_IN_COMMENTS, false);
mHideUserInstance = sharedPreferences.getBoolean(SharedPreferencesUtils.COMMENT_HIDE_USER_INSTANCE, false);
mShowUserDisplayName = sharedPreferences.getBoolean(SharedPreferencesUtils.COMMENT_DISPLAY_NAME_INSTEAD_OF_USERNAME, true);
mHideDownvotes = !currentAccountSharedPreferences.getBoolean(SharedPreferencesUtils.CAN_DOWNVOTE, true);
mSeperateUpandDownvote = sharedPreferences.getBoolean(SharedPreferencesUtils.COMMENT_SEPARATE_UP_AND_DOWN_VOTES, true) && !mHideDownvotes;
mDepthThreshold = sharedPreferences.getInt(SharedPreferencesUtils.SHOW_FEWER_TOOLBAR_OPTIONS_THRESHOLD, 5);
@@ -375,9 +382,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
if (mIsSingleCommentThreadMode && comment.getId() == mSingleCommentId) {
holder.itemView.setBackgroundColor(mSingleCommentThreadBackgroundColor);
}
String authorPrefixed = comment.getAuthorQualifiedName();
((CommentViewHolder) holder).authorTextView.setText(authorPrefixed);
String authorDisplayName = (mShowUserDisplayName) ? comment.getAuthorName() : comment.getAuthor().getUsername();
String authorInstance = (mHideUserInstance) ? "" : "@" + comment.getAuthor().getQualifiedName().split(Pattern.quote("@"))[1];
((CommentViewHolder) holder).authorTextView.setText(authorDisplayName + authorInstance);
if (comment.isSubmitter()) {
@@ -565,7 +572,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
} else if (holder instanceof CommentFullyCollapsedViewHolder) {
Comment comment = getCurrentComment(position);
if (comment != null) {
String authorWithPrefix = "u/" + comment.getAuthor();
String authorWithPrefix = "u/" + comment.getAuthorName();
((CommentFullyCollapsedViewHolder) holder).usernameTextView.setText(authorWithPrefix);
if (comment.getAuthorIconUrl() == null) {
@@ -648,7 +655,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
mVisibleComments.get(commentPosition).setLoadMoreChildrenFailed(false);
((LoadMoreChildCommentsViewHolder) holder).placeholderTextView.setText(R.string.loading);
Retrofit retrofit = mRetrofit;
Retrofit retrofit = mRetrofit.getRetrofit();
SortType.Type sortType = mCommentRecyclerViewAdapterCallback.getSortType();
FetchComment.fetchComments(mExecutor, new Handler(), retrofit, mAccessToken,
mPost.getId(), parentComment.getId(), sortType,
@@ -905,7 +912,8 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
loadedComments.add(comments.get(i).getId());
}
if (mIsSingleCommentThreadMode) {
notifyItemRangeInserted(sizeBefore, comments.size() + 1);
int offset = (comments.size() > 0) ? 1 : 0;
notifyItemRangeInserted(sizeBefore, comments.size() + offset);
} else {
notifyItemRangeInserted(sizeBefore, comments.size());
}
@@ -1478,7 +1486,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
comment.getScore() + comment.getVoteType())));
}
VoteThing.voteComment(mActivity, mRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
VoteThing.voteComment(mActivity, mRetrofit.getRetrofit(), mAccessToken, new VoteThing.VoteThingListener() {
@Override
public void onVoteThingSuccess(int position) {
int currentPosition = getBindingAdapterPosition();
@@ -1585,7 +1593,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
}
int position = getBindingAdapterPosition();
VoteThing.voteComment(mActivity, mRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
VoteThing.voteComment(mActivity, mRetrofit.getRetrofit(), mAccessToken, new VoteThing.VoteThingListener() {
@Override
public void onVoteThingSuccess(int position1) {
int currentPosition = getBindingAdapterPosition();
@@ -1593,9 +1601,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
comment.setVoteType(Comment.VOTE_TYPE_DOWNVOTE);
if (currentPosition == position) {
downvoteButton.setColorFilter(mDownvotedColor, PorterDuff.Mode.SRC_IN);
if(mSeperateUpandDownvote){
if (mSeperateUpandDownvote) {
downvoteTextView.setTextColor(mDownvotedColor);
}else {
} else {
scoreTextView.setTextColor(mDownvotedColor);
}
topScoreTextView.setTextColor(mDownvotedColor);
@@ -1645,7 +1653,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
SaveComment saveComment = new SaveComment();
if (comment.isSaved()) {
comment.setSaved(false);
saveComment.unsaveThing(mRetrofit, mAccessToken, comment.getId(), new SaveThing.SaveThingListener() {
saveComment.unsaveThing(mRetrofit.getRetrofit(), mAccessToken, comment.getId(), new SaveThing.SaveThingListener() {
@Override
public void success() {
comment.setSaved(false);
@@ -1666,7 +1674,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
});
} else {
comment.setSaved(true);
saveComment.saveThing(mRetrofit, mAccessToken, comment.getId(), new SaveThing.SaveThingListener() {
saveComment.saveThing(mRetrofit.getRetrofit(), mAccessToken, comment.getId(), new SaveThing.SaveThingListener() {
@Override
public void success() {
comment.setSaved(true);
@@ -1695,7 +1703,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
return;
}
Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, comment.getAuthor());
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, comment.getAuthorName());
intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, comment.getAuthorQualifiedName());
mActivity.startActivity(intent);
});

View File

@@ -217,7 +217,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<CommentInteract
((DataViewHolder) holder).authorTextView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getComment().getAuthor());
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getComment().getAuthorName());
intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, message.getComment().getAuthorQualifiedName());
mActivity.startActivity(intent);
});

View File

@@ -0,0 +1,20 @@
package eu.toldi.infinityforlemmy.adapters;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.user.BasicUserRecyclerViewAdapter;
public class ModeratorRecyclerViewAdapter extends BasicUserRecyclerViewAdapter {
private final int mModeratorColor;
public ModeratorRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper) {
super(activity, customThemeWrapper);
mModeratorColor = customThemeWrapper.getModerator();
}
@Override
protected int getUserNameTextColor() {
return mModeratorColor;
}
}

View File

@@ -16,13 +16,6 @@ import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonPlugin;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.recycler.MarkwonAdapter;
import me.saket.bettermovementmethod.BetterLinkMovementMethod;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.Rule;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
@@ -33,6 +26,13 @@ import eu.toldi.infinityforlemmy.customviews.SwipeLockInterface;
import eu.toldi.infinityforlemmy.customviews.SwipeLockLinearLayoutManager;
import eu.toldi.infinityforlemmy.customviews.slidr.widget.SliderPanel;
import eu.toldi.infinityforlemmy.markdown.MarkdownUtils;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonPlugin;
import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.recycler.MarkwonAdapter;
import me.saket.bettermovementmethod.BetterLinkMovementMethod;
public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecyclerViewAdapter.RuleViewHolder> {
private BaseActivity activity;

View File

@@ -1,9 +1,11 @@
package eu.toldi.infinityforlemmy.adapters;
import android.content.Intent;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -22,6 +24,7 @@ import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.activities.ViewSubredditDetailActivity;
import eu.toldi.infinityforlemmy.asynctasks.InsertSubscribedThings;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditData;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
@@ -158,11 +161,31 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
fullname = mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).getQualified_name();
iconUrl = mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).getIconUrl();
if (mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).isFavorite()) {
((SubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
} else {
((SubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
((SubredditViewHolder) viewHolder).favoriteImageView.setOnClickListener(view -> {
if (mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).isFavorite()) {
((SubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).setFavorite(false);
} else {
((SubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).setFavorite(true);
}
InsertSubscribedThings.insertSubscribedThings(mExecutor, new Handler(), mRedditDataRoomDatabase, mSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset),
() -> {
});
});
if (itemClickListener != null) {
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(communityData));
}
}
if (itemClickListener == null) {
String finalFullname = fullname;
viewHolder.itemView.setOnClickListener(view -> {
@@ -201,12 +224,33 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
String name = mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).getName();
String iconUrl = mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).getIconUrl();
if (mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).isFavorite()) {
((FavoriteSubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
} else {
((FavoriteSubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
((FavoriteSubredditViewHolder) viewHolder).favoriteImageView.setOnClickListener(view -> {
if (mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).isFavorite()) {
((FavoriteSubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).setFavorite(false);
} else {
((FavoriteSubredditViewHolder) viewHolder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).setFavorite(true);
}
InsertSubscribedThings.insertSubscribedThings(mExecutor, new Handler(), mRedditDataRoomDatabase, mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset),
() -> {
});
});
if (itemClickListener != null) {
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(communityData));
} else {
viewHolder.itemView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, ViewSubredditDetailActivity.class);
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, name);
intent.putExtra(ViewSubredditDetailActivity.EXTRA_COMMUNITY_FULL_NAME_KEY,
mFavoriteSubscribedSubredditData.get(viewHolder.getBindingAdapterPosition() - offset).getQualified_name());
mActivity.startActivity(intent);
});
}
@@ -243,6 +287,7 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
if(holder instanceof SubredditViewHolder) {
glide.clear(((SubredditViewHolder) holder).iconGifImageView);
((SubredditViewHolder) holder).favoriteImageView.setVisibility(View.VISIBLE);
} else if (holder instanceof FavoriteSubredditViewHolder) {
glide.clear(((FavoriteSubredditViewHolder) holder).iconGifImageView);
}
@@ -317,6 +362,8 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
GifImageView iconGifImageView;
@BindView(R.id.thing_name_text_view_item_subscribed_thing)
TextView subredditNameTextView;
@BindView(R.id.favorite_image_view_item_subscribed_thing)
ImageView favoriteImageView;
SubredditViewHolder(View itemView) {
super(itemView);
@@ -333,6 +380,9 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
GifImageView iconGifImageView;
@BindView(R.id.thing_name_text_view_item_subscribed_thing)
TextView subredditNameTextView;
@BindView(R.id.favorite_image_view_item_subscribed_thing)
ImageView favoriteImageView;
FavoriteSubredditViewHolder(View itemView) {
super(itemView);

View File

@@ -24,7 +24,7 @@ public class LemmySectionRecyclerViewAdapter extends RecyclerView.Adapter<Recycl
private static final int VIEW_TYPE_MENU_ITEM = 2;
private static final int LEMMY_SECTION_ITEMS = 2;
private static final int LEMMY_SECTION_ANONYMOUS_ITEMS = 1;
private static final int LEMMY_SECTION_ANONYMOUS_ITEMS = 2;
private final boolean isLoggedIn;
private BaseActivity baseActivity;
@@ -93,9 +93,15 @@ public class LemmySectionRecyclerViewAdapter extends RecyclerView.Adapter<Recycl
drawableId = R.drawable.ic_baseline_info_24;
break;
case 2:
stringId = R.string.blocks;
drawableId = R.drawable.ic_outline_lock_24dp;
break;
if (isLoggedIn) {
stringId = R.string.blocks;
drawableId = R.drawable.ic_outline_lock_24dp;
break;
} else {
stringId = R.string.anonymous_account_instance;
drawableId = R.drawable.ic_account_circle_24dp;
break;
}
}
((MenuItemViewHolder) holder).menuTextView.setText(stringId);

View File

@@ -38,7 +38,7 @@ public class InsertSubscribedThings {
if (subscribedSubredditDataList != null) {
List<SubscribedSubredditData> existingSubscribedSubredditDataList =
subscribedSubredditDao.getAllSubscribedSubredditsList(accountName);
Collections.sort(subscribedSubredditDataList, (subscribedSubredditData, t1) -> subscribedSubredditData.getName().compareToIgnoreCase(t1.getName()));
Collections.sort(subscribedSubredditDataList, (subscribedSubredditData, t1) -> subscribedSubredditData.getQualified_name().compareToIgnoreCase(t1.getQualified_name()));
List<String> unsubscribedSubreddits = new ArrayList<>();
compareTwoSubscribedSubredditList(subscribedSubredditDataList, existingSubscribedSubredditDataList,
unsubscribedSubreddits);
@@ -48,6 +48,9 @@ public class InsertSubscribedThings {
}
for (SubscribedSubredditData s : subscribedSubredditDataList) {
if (existingSubscribedSubredditDataList.contains(s)) {
continue;
}
subscribedSubredditDao.insert(s);
}
}
@@ -79,7 +82,8 @@ public class InsertSubscribedThings {
});
}
public static void insertSubscribedThings(Executor executor, Handler handler, RedditDataRoomDatabase redditDataRoomDatabase,
public static void insertSubscribedThings(Executor executor, Handler
handler, RedditDataRoomDatabase redditDataRoomDatabase,
SubscribedSubredditData singleSubscribedSubredditData,
InsertSubscribedThingListener insertSubscribedThingListener) {
executor.execute(() -> {
@@ -94,7 +98,8 @@ public class InsertSubscribedThings {
});
}
public static void insertSubscribedThings(Executor executor, Handler handler, RedditDataRoomDatabase redditDataRoomDatabase,
public static void insertSubscribedThings(Executor executor, Handler
handler, RedditDataRoomDatabase redditDataRoomDatabase,
SubscribedUserData mSingleSubscribedUserData,
InsertSubscribedThingListener insertSubscribedThingListener) {
executor.execute(() -> {
@@ -109,35 +114,37 @@ public class InsertSubscribedThings {
});
}
private static void compareTwoSubscribedSubredditList(List<SubscribedSubredditData> newSubscribedSubreddits,
List<SubscribedSubredditData> oldSubscribedSubreddits,
List<String> unsubscribedSubredditNames) {
private static void compareTwoSubscribedSubredditList
(List<SubscribedSubredditData> newSubscribedSubreddits,
List<SubscribedSubredditData> oldSubscribedSubreddits,
List<String> unsubscribedSubredditNames) {
int newIndex = 0;
for (int oldIndex = 0; oldIndex < oldSubscribedSubreddits.size(); oldIndex++) {
if (newIndex >= newSubscribedSubreddits.size()) {
for (; oldIndex < oldSubscribedSubreddits.size(); oldIndex++) {
unsubscribedSubredditNames.add(oldSubscribedSubreddits.get(oldIndex).getName());
unsubscribedSubredditNames.add(oldSubscribedSubreddits.get(oldIndex).getQualified_name());
}
return;
}
SubscribedSubredditData old = oldSubscribedSubreddits.get(oldIndex);
for (; newIndex < newSubscribedSubreddits.size(); newIndex++) {
if (newSubscribedSubreddits.get(newIndex).getName().compareToIgnoreCase(old.getName()) == 0) {
if (newSubscribedSubreddits.get(newIndex).getQualified_name().compareToIgnoreCase(old.getQualified_name()) == 0) {
newIndex++;
break;
}
if (newSubscribedSubreddits.get(newIndex).getName().compareToIgnoreCase(old.getName()) > 0) {
unsubscribedSubredditNames.add(old.getName());
if (newSubscribedSubreddits.get(newIndex).getQualified_name().compareToIgnoreCase(old.getQualified_name()) > 0) {
unsubscribedSubredditNames.add(old.getQualified_name());
break;
}
}
}
}
private static void compareTwoSubscribedUserList(List<SubscribedUserData> newSubscribedUsers,
List<SubscribedUserData> oldSubscribedUsers,
List<String> unsubscribedUserNames) {
private static void compareTwoSubscribedUserList
(List<SubscribedUserData> newSubscribedUsers,
List<SubscribedUserData> oldSubscribedUsers,
List<String> unsubscribedUserNames) {
int newIndex = 0;
for (int oldIndex = 0; oldIndex < oldSubscribedUsers.size(); oldIndex++) {
if (newIndex >= newSubscribedUsers.size()) {

View File

@@ -8,6 +8,7 @@ import java.util.Arrays;
import java.util.List;
import eu.toldi.infinityforlemmy.BuildConfig;
import eu.toldi.infinityforlemmy.user.BasicUserInfo;
public class Comment implements Parcelable {
public static final int VOTE_TYPE_NO_VOTE = 0;
@@ -29,9 +30,7 @@ public class Comment implements Parcelable {
};
private int id;
private String fullName;
private String author;
private String authorQualifiedName;
private String authorIconUrl;
private BasicUserInfo author;
private String linkAuthor;
private long commentTimeMillis;
private String commentMarkdown;
@@ -66,16 +65,14 @@ public class Comment implements Parcelable {
private List<String> path;
private int postId;
public Comment(int id, int postId, String fullName, String author, String authorQualifiedName, String linkAuthor,
public Comment(int id, int postId, BasicUserInfo author, String linkAuthor,
long commentTimeMillis, String commentMarkdown, String commentRawText,
String linkId, String communityName, String communityQualifiedName, Integer parentId, int downvotes,int upvotes,
String linkId, String communityName, String communityQualifiedName, Integer parentId, int downvotes, int upvotes,
int voteType, boolean isSubmitter, String distinguished, String permalink,
int depth, boolean collapsed, boolean hasReply, boolean saved, boolean deleted, long edited, String[] path) {
this.id = id;
this.postId = postId;
this.fullName = fullName;
this.author = author;
this.authorQualifiedName = authorQualifiedName;
this.linkAuthor = linkAuthor;
this.commentTimeMillis = commentTimeMillis;
this.commentMarkdown = commentMarkdown;
@@ -122,10 +119,7 @@ public class Comment implements Parcelable {
protected Comment(Parcel in) {
id = in.readInt();
postId = in.readInt();
fullName = in.readString();
author = in.readString();
authorQualifiedName = in.readString();
authorIconUrl = in.readString();
author = in.readParcelable(BasicUserInfo.class.getClassLoader());
linkAuthor = in.readString();
commentTimeMillis = in.readLong();
commentMarkdown = in.readString();
@@ -169,8 +163,8 @@ public class Comment implements Parcelable {
return fullName;
}
public String getAuthor() {
return author;
public String getAuthorName() {
return author.getDisplayName();
}
public boolean isAuthorDeleted() {
@@ -178,16 +172,17 @@ public class Comment implements Parcelable {
}
public void setAuthor(String author) {
this.author = author;
//this.author = author;
}
public String getAuthorIconUrl() {
return authorIconUrl;
return author.getAvatar();
}
public void setAuthorIconUrl(String authorIconUrl) {
this.authorIconUrl = authorIconUrl;
//this.authorIconUrl = authorIconUrl;
}
public String getLinkAuthor() {
@@ -435,10 +430,7 @@ public class Comment implements Parcelable {
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(id);
parcel.writeInt(postId);
parcel.writeString(fullName);
parcel.writeString(author);
parcel.writeString(authorQualifiedName);
parcel.writeString(authorIconUrl);
parcel.writeParcelable(author, i);
parcel.writeString(linkAuthor);
parcel.writeLong(commentTimeMillis);
parcel.writeString(commentMarkdown);
@@ -486,7 +478,7 @@ public class Comment implements Parcelable {
}
public String getAuthorQualifiedName() {
return authorQualifiedName;
return author.getQualifiedName();
}
public String getCommunityQualifiedName() {
@@ -496,4 +488,8 @@ public class Comment implements Parcelable {
public int getPostId() {
return postId;
}
public BasicUserInfo getAuthor() {
return author;
}
}

View File

@@ -110,7 +110,7 @@ public class FetchRemovedComment {
boolean isSubmitter = result.getBoolean(JSONUtils.IS_SUBMITTER_KEY);
if (id.equals(comment.getId()) &&
(!author.equals(comment.getAuthor()) ||
(!author.equals(comment.getAuthorName()) ||
!body.equals(comment.getCommentRawText()))
) {
comment.setAuthor(author);

View File

@@ -56,7 +56,7 @@ public class FetchRemovedCommentReveddit {
String author = result.getString(JSONUtils.AUTHOR_KEY);
String body = Utils.modifyMarkdown(Utils.trimTrailingWhitespace(result.optString(JSONUtils.BODY_KEY)));
if (id.equals(comment.getId()) && (!author.equals(comment.getAuthor()) || !body.equals(comment.getCommentRawText()))) {
if (id.equals(comment.getId()) && (!author.equals(comment.getAuthorName()) || !body.equals(comment.getCommentRawText()))) {
comment.setAuthor(author);
comment.setCommentMarkdown(body);
comment.setCommentRawText(body);

View File

@@ -24,6 +24,7 @@ import java.util.TimeZone;
import java.util.concurrent.Executor;
import java.util.regex.Pattern;
import eu.toldi.infinityforlemmy.user.BasicUserInfo;
import eu.toldi.infinityforlemmy.utils.JSONUtils;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
@@ -340,10 +341,10 @@ public class ParseComment {
boolean saved = jsonObject.getBoolean("saved");
boolean deleted = commentObj.getBoolean("deleted");
long edited = 0;
Comment comment = new Comment(id, postID, fullName, author, authorQualifiedName, linkAuthor, commentTimeMillis,
BasicUserInfo authorInfo = new BasicUserInfo(creatorObj.getInt("id"), author, authorQualifiedName, creatorObj.optString("avatar", ""), creatorObj.optString("display_name", author));
Comment comment = new Comment(id, postID, authorInfo, linkAuthor, commentTimeMillis,
commentMarkdown, commentRawText, linkId, communityName, communityQualifiedName, parentId,
downvotes,upvotes, voteType, isSubmitter, distinguished, permalink, depth, collapsed, hasReply, saved, deleted, edited, path);
downvotes, upvotes, voteType, isSubmitter, distinguished, permalink, depth, collapsed, hasReply, saved, deleted, edited, path);
int child_count = countsObj.getInt("child_count");
comment.setChildCount(child_count);
comment.setAuthorIconUrl(authorAvatar);

View File

@@ -54,407 +54,412 @@ public class CustomThemeWrapper {
public int getColorPrimary() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COLOR_PRIMARY,
getDefaultColor("#0336FF", "#393A59", "#000000"));
getDefaultColor("#F2E9E1", "#2B3B51", "#282828"));
}
public int getColorPrimaryDark() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COLOR_PRIMARY_DARK,
getDefaultColor("#002BF0", "#393A59", "#000000"));
getDefaultColor("#F2E9E1", "#192330", "#161616"));
}
public int getColorAccent() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COLOR_ACCENT,
getDefaultColor("#FF1868", "#F8F8F2", "#FF1868"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getColorPrimaryLightTheme() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COLOR_PRIMARY_LIGHT_THEME,
getDefaultColor("#0336FF", "#393A59", "#0336FF"));
getDefaultColor("#F2E9E1", "#192330", "#161616"));
}
public int getPrimaryTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.PRIMARY_TEXT_COLOR,
getDefaultColor("#000000", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getSecondaryTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SECONDARY_TEXT_COLOR,
getDefaultColor("#8A000000", "#B3FFFFFF", "#B3FFFFFF"));
getDefaultColor("#352C24", "#DFDFE0", "#E4E4E5"));
}
public int getPostTitleColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.POST_TITLE_COLOR,
getDefaultColor("#000000", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getPostContentColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.POST_CONTENT_COLOR,
getDefaultColor("#8A000000", "#B3FFFFFF", "#B3FFFFFF"));
getDefaultColor("#352C24", "#DFDFE0", "#E4E4E5"));
}
public int getReadPostTitleColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.READ_POST_TITLE_COLOR,
getDefaultColor("#9D9D9D", "#9D9D9D", "#979797"));
getDefaultColor("#352C24", "#738091", "#484848"));
}
public int getReadPostContentColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.READ_POST_CONTENT_COLOR,
getDefaultColor("#9D9D9D", "#9D9D9D", "#979797"));
getDefaultColor("#352C24", "#738091", "#484848"));
}
public int getCommentColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_COLOR,
getDefaultColor("#000000", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getButtonTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.BUTTON_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.BACKGROUND_COLOR,
getDefaultColor("#FFFFFF", "#282A36", "#000000"));
getDefaultColor("#F6F2EE", "#192330", "#161616"));
}
public int getCardViewBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.CARD_VIEW_BACKGROUND_COLOR,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F2E9E1", "#2B3B51", "#282828"));
}
public int getReadPostCardViewBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.READ_POST_CARD_VIEW_BACKGROUND_COLOR,
getDefaultColor("#F5F5F5", "#1C1F3D", "#000000"));
getDefaultColor("#F2E9E1", "#2B3B51", "#282828"));
}
public int getCommentBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_BACKGROUND_COLOR,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F6F2EE", "#192330", "#282828"));
}
public int getBottomAppBarBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.BOTTOM_APP_BAR_BACKGROUND_COLOR,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F2E9E1", "#2B3B51", "#161616"));
}
public int getPrimaryIconColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.PRIMARY_ICON_COLOR,
getDefaultColor("#000000", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getBottomAppBarIconColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.BOTTOM_APP_BAR_ICON_COLOR,
getDefaultColor("#000000", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getPostIconAndInfoColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.POST_ICON_AND_INFO_COLOR,
getDefaultColor("#8A000000", "#B3FFFFFF", "#B3FFFFFF"));
getDefaultColor("#352C24", "#DFDFE0", "#E4E4E5"));
}
public int getCommentIconAndInfoColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_ICON_AND_INFO_COLOR,
getDefaultColor("#8A000000", "#B3FFFFFF", "#B3FFFFFF"));
getDefaultColor("#352C24", "#DFDFE0", "#E4E4E5"));
}
public int getToolbarPrimaryTextAndIconColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TOOLBAR_PRIMARY_TEXT_AND_ICON_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#352C24", "#CDCECF", "#F2F4F8"));
}
public int getToolbarSecondaryTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TOOLBAR_SECONDARY_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#352C24", "#CDCECF", "#F2F4F8"));
}
public int getCircularProgressBarBackground() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.CIRCULAR_PROGRESS_BAR_BACKGROUND,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F6F2EE", "#2B3B51", "#282828"));
}
public int getMediaIndicatorIconColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.MEDIA_INDICATOR_ICON_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#000000"));
getDefaultColor("#F6F2EE", "#393B44", "#161616"));
}
public int getMediaIndicatorBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.MEDIA_INDICATOR_BACKGROUND_COLOR,
getDefaultColor("#000000", "#000000", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getTabLayoutWithExpandedCollapsingToolbarTabBackground() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TAB_LAYOUT_WITH_EXPANDED_COLLAPSING_TOOLBAR_TAB_BACKGROUND,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F6F2EE", "#2B3B51", "#282828"));
}
public int getTabLayoutWithExpandedCollapsingToolbarTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TAB_LAYOUT_WITH_EXPANDED_COLLAPSING_TOOLBAR_TEXT_COLOR,
getDefaultColor("#0336FF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#352C24", "#CDCECF", "#F2F4F8"));
}
public int getTabLayoutWithExpandedCollapsingToolbarTabIndicator() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TAB_LAYOUT_WITH_EXPANDED_COLLAPSING_TOOLBAR_TAB_INDICATOR,
getDefaultColor("#0336FF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#352C24", "#CDCECF", "#F2F4F8"));
}
public int getTabLayoutWithCollapsedCollapsingToolbarTabBackground() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TAB_LAYOUT_WITH_COLLAPSED_COLLAPSING_TOOLBAR_TAB_BACKGROUND,
getDefaultColor("#0336FF", "#393A59", "#000000"));
getDefaultColor("#F6F2EE", "#2B3B51", "#282828"));
}
public int getTabLayoutWithCollapsedCollapsingToolbarTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TAB_LAYOUT_WITH_COLLAPSED_COLLAPSING_TOOLBAR_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#352C24", "#CDCECF", "#F2F4F8"));
}
public int getTabLayoutWithCollapsedCollapsingToolbarTabIndicator() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.TAB_LAYOUT_WITH_COLLAPSED_COLLAPSING_TOOLBAR_TAB_INDICATOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#352C24", "#CDCECF", "#F2F4F8"));
}
public int getUpvoted() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.UPVOTED,
getDefaultColor("#FF1868", "#FF008C", "#FF1868"));
getDefaultColor("#A5222F", "#DBC074", "#F16DA6"));
}
public int getDownvoted() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.DOWNVOTED,
getDefaultColor("#007DDE", "#007DDE", "#007DDE"));
getDefaultColor("#4863B6", "#D16983", "#52BDFF"));
}
public int getPostTypeBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.POST_TYPE_BACKGROUND_COLOR,
getDefaultColor("#002BF0", "#0336FF", "#0336FF"));
getDefaultColor("#4863B6", "#719CD6", "#33B1FF"));
}
public int getPostTypeTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.POST_TYPE_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#DFDFE0", "#282828"));
}
public int getSpoilerBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SPOILER_BACKGROUND_COLOR,
getDefaultColor("#EE02EB", "#EE02EB", "#EE02EB"));
getDefaultColor("#A440B5", "#E0C989", "#F16DA6"));
}
public int getSpoilerTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SPOILER_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#393B44", "#282828"));
}
public int getNsfwBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.NSFW_BACKGROUND_COLOR,
getDefaultColor("#FF1868", "#FF1868", "#FF1868"));
getDefaultColor("#A5222F", "#D16983", "#F16DA6"));
}
public int getNsfwTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.NSFW_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#393B44", "#282828"));
}
public int getFlairBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.FLAIR_BACKGROUND_COLOR,
getDefaultColor("#00AA8C", "#00AA8C", "#00AA8C"));
getDefaultColor("#488D93", "#9D79D6", "#3DDBD9"));
}
public int getFlairTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.FLAIR_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#DFDFE0", "#282828"));
}
public int getAwardsBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.AWARDS_BACKGROUND_COLOR,
getDefaultColor("#EEAB02", "#EEAB02", "#EEAB02"));
getDefaultColor("#B86E28", "#E0C989", "#3DDBD9"));
}
public int getAwardsTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.AWARDS_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#575860", "#282828"));
}
public int getArchivedIconTint() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.ARCHIVED_ICON_TINT,
getDefaultColor("#B4009F", "#B4009F", "#B4009F"));
getDefaultColor("#A440B5", "#D67AD2", "#EE5396"));
}
public int getLockedIconTint() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.LOCKED_ICON_TINT,
getDefaultColor("#EE7302", "#EE7302", "#EE7302"));
getDefaultColor("#AC5402", "#F4A261", "#EE5396"));
}
public int getCrosspostIconTint() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.CROSSPOST_ICON_TINT,
getDefaultColor("#FF1868", "#FF1868", "#FF1868"));
getDefaultColor("#A5222F", "#DBC074", "#F16DA6"));
}
public int getUpvoteRatioIconTint() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.UPVOTE_RATIO_ICON_TINT,
getDefaultColor("#0256EE", "#0256EE", "#0256EE"));
getDefaultColor("#2848A9", "#86ABDC", "#33B1FF"));
}
public int getStickiedPostIconTint() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.STICKIED_POST_ICON_TINT,
getDefaultColor("#002BF0", "#02ABEE", "#0336FF"));
getDefaultColor("#4863B6", "#719CD6", "#33B1FF"));
}
public int getNoPreviewPostTypeIconTint() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.NO_PREVIEW_POST_TYPE_ICON_TINT,
getDefaultColor("#808080", "#FFFFFF", "#808080"));
getDefaultColor("#F6F2EE", "#CDCECF", "#F2F4F8"));
}
public int getSubscribed() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SUBSCRIBED,
getDefaultColor("#FF1868", "#FF1868", "#FF1868"));
getDefaultColor("#A5222F", "#D16983", "#F16DA6"));
}
public int getUnsubscribed() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.UNSUBSCRIBED,
getDefaultColor("#002BF0", "#002BF0", "#0336FF"));
getDefaultColor("#4863B6", "#719CD6", "#33B1FF"));
}
public int getUsername() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.USERNAME,
getDefaultColor("#002BF0", "#1E88E5", "#1E88E5"));
getDefaultColor("#4863B6", "#86ABDC", "#52BDFF"));
}
public int getSubreddit() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SUBREDDIT,
getDefaultColor("#FF1868", "#FF4B9C", "#FF1868"));
getDefaultColor("#A5222F", "#DBC074", "#F16DA6"));
}
public int getAuthorFlairTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.AUTHOR_FLAIR_TEXT_COLOR,
getDefaultColor("#EE02C4", "#EE02C4", "#EE02C4"));
getDefaultColor("#A440B5", "#D67AD2", "#F16DA6"));
}
public int getSubmitter() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SUBMITTER,
getDefaultColor("#EE8A02", "#EE8A02", "#EE8A02"));
getDefaultColor("#AC5402", "#E0C989", "#3DDBD9"));
}
public int getModerator() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.MODERATOR,
getDefaultColor("#00BA81", "#00BA81", "#00BA81"));
getDefaultColor("#577F63", "#D67AD2", "#25BE6A"));
}
public int getAdmin() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.MODERATOR,
getDefaultColor("#a5222f", "#c94f6d", "#EE5396"));
}
public int getCurrentUser() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.CURRENT_USER,
getDefaultColor("#00D5EA", "#00D5EA", "#00D5EA"));
getDefaultColor("#488D93", "#7AD5D6", "#2DC7C4"));
}
public int getSingleCommentThreadBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SINGLE_COMMENT_THREAD_BACKGROUND_COLOR,
getDefaultColor("#B3E5F9", "#5F5B85", "#123E77"));
getDefaultColor("#F2E9E1", "#2B3B51", "#484848"));
}
public int getUnreadMessageBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.UNREAD_MESSAGE_BACKGROUND_COLOR,
getDefaultColor("#B3E5F9", "#5F5B85", "#123E77"));
getDefaultColor("#F6F2EE", "#393B44", "#484848"));
}
public int getDividerColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.DIVIDER_COLOR,
getDefaultColor("#E0E0E0", "#69666C", "#69666C"));
getDefaultColor("#F2E9E1", "#2B3B51", "#484848"));
}
public int getNoPreviewPostTypeBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.NO_PREVIEW_POST_TYPE_BACKGROUND_COLOR,
getDefaultColor("#E0E0E0", "#6272A4", "#424242"));
getDefaultColor("#3D2B5A", "#D16983", "#161616"));
}
public int getVoteAndReplyUnavailableButtonColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.VOTE_AND_REPLY_UNAVAILABLE_BUTTON_COLOR,
getDefaultColor("#F0F0F0", "#777C82", "#3C3C3C"));
getDefaultColor("#F6F2EE", "#192330", "#484848"));
}
public int getCommentVerticalBarColor1() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_1,
getDefaultColor("#0336FF", "#8BE9FD", "#0336FF"));
getDefaultColor("#2848A9", "#719CD6", "#33B1FF"));
}
public int getCommentVerticalBarColor2() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_2,
getDefaultColor("#EE02BE", "#50FA7B", "#C300B3"));
getDefaultColor("#A440B5", "#D16983", "#C8A5FF"));
}
public int getCommentVerticalBarColor3() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_3,
getDefaultColor("#02DFEE", "#FFB86C", "#00B8DA"));
getDefaultColor("#4863B6", "#86ABDC", "#2DC7C4"));
}
public int getCommentVerticalBarColor4() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_4,
getDefaultColor("#EED502", "#FF79C6", "#EDCA00"));
getDefaultColor("#B86E28", "#DBC074", "#78A9FF"));
}
public int getCommentVerticalBarColor5() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_5,
getDefaultColor("#EE0220", "#BD93F9", "#EE0219"));
getDefaultColor("#B3434E", "#C94F6D", "#EE5396"));
}
public int getCommentVerticalBarColor6() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_6,
getDefaultColor("#02EE6E", "#FF5555", "#00B925"));
getDefaultColor("#577F63", "#81B27A", "#25BE6A"));
}
public int getCommentVerticalBarColor7() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_7,
getDefaultColor("#EE4602", "#F1FA8C", "#EE4602"));
getDefaultColor("#955F61", "#D16983", "#FF7EB6"));
}
public int getFABIconColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.FAB_ICON_COLOR,
getDefaultColor("#FFFFFF", "#000000", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#192330", "#161616"));
}
public int getChipTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.CHIP_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#CDCECF", "#282828"));
}
public int getLinkColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.LINK_COLOR,
getDefaultColor("#FF1868", "#FF1868", "#FF1868"));
getDefaultColor("#A5222F", "#DBC074", "#F16DA6"));
}
public int getReceivedMessageTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.RECEIVED_MESSAGE_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#3D2B5A", "#CDCECF", "#F2F4F8"));
}
public int getSentMessageTextColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SENT_MESSAGE_TEXT_COLOR,
getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
getDefaultColor("#F6F2EE", "#CDCECF", "#F2F4F8"));
}
public int getReceivedMessageBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.RECEIVED_MESSAGE_BACKROUND_COLOR,
getDefaultColor("#4185F4", "#4185F4", "#4185F4"));
getDefaultColor("#F2E9E1", "#2B3B51", "#484848"));
}
public int getSentMessageBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SENT_MESSAGE_BACKGROUND_COLOR,
getDefaultColor("#31BF7D", "#31BF7D", "#31BF7D"));
getDefaultColor("#577F63", "#393B44", "#46C880"));
}
public int getSendMessageIconColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SEND_MESSAGE_ICON_COLOR,
getDefaultColor("#4185F4", "#4185F4", "#4185F4"));
getDefaultColor("#4863B6", "#C94F6D", "#52BDFF"));
}
public int getFullyCollapsedCommentBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.FULLY_COLLAPSED_COMMENT_BACKGROUND_COLOR,
getDefaultColor("#8EDFBA", "#21C561", "#21C561"));
getDefaultColor("#F2E9E1", "#2B3B51", "#484848"));
}
public int getAwardedCommentBackgroundColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.AWARDED_COMMENT_BACKGROUND_COLOR,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F6F2EE", "#E0C989", "#282828"));
}
public int getNavBarColor() {
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.NAV_BAR_COLOR,
getDefaultColor("#FFFFFF", "#393A59", "#000000"));
getDefaultColor("#F6F2EE", "#192330", "#161616"));
}
public boolean isLightStatusBar() {
@@ -493,6 +498,12 @@ public class CustomThemeWrapper {
return getDracula(context);
} else if (name.equals(context.getString(R.string.theme_name_calm_pastel))) {
return getCalmPastel(context);
} else if (name.equals(context.getString(R.string.theme_name_dayfox))) {
return getDayfox(context);
} else if (name.equals(context.getString(R.string.theme_name_nightfox))) {
return getNightfox(context);
} else if (name.equals(context.getString(R.string.theme_name_carbonfox))) {
return getCarbonfox(context);
} else {
return getIndigo(context);
}
@@ -511,6 +522,9 @@ public class CustomThemeWrapper {
customThemes.add(getRedAmoled(context));
customThemes.add(getDracula(context));
customThemes.add(getCalmPastel(context));
customThemes.add(getDayfox(context));
customThemes.add(getNightfox(context));
customThemes.add(getCarbonfox(context));
return customThemes;
}
@@ -1537,6 +1551,288 @@ public class CustomThemeWrapper {
return customTheme;
}
private static CustomTheme getDayfox(Context context) {
CustomTheme customTheme = new CustomTheme(context.getString(R.string.theme_name_dayfox));
customTheme.isLightTheme = true;
customTheme.isDarkTheme = false;
customTheme.isAmoledTheme = false;
customTheme.colorPrimary = Color.parseColor("#F2E9E1");
customTheme.colorPrimaryDark = Color.parseColor("#F2E9E1");
customTheme.colorAccent = Color.parseColor("#3D2B5A");
customTheme.colorPrimaryLightTheme = Color.parseColor("#F2E9E1");
customTheme.primaryTextColor = Color.parseColor("#3D2B5A");
customTheme.secondaryTextColor = Color.parseColor("#352C24");
customTheme.postTitleColor = Color.parseColor("#3D2B5A");
customTheme.postContentColor = Color.parseColor("#352C24");
customTheme.readPostTitleColor = Color.parseColor("#352C24");
customTheme.readPostContentColor = Color.parseColor("#352C24");
customTheme.commentColor = Color.parseColor("#3D2B5A");
customTheme.buttonTextColor = Color.parseColor("#3D2B5A");
customTheme.backgroundColor = Color.parseColor("#F6F2EE");
customTheme.cardViewBackgroundColor = Color.parseColor("#F2E9E1");
customTheme.readPostCardViewBackgroundColor = Color.parseColor("#F2E9E1");
customTheme.commentBackgroundColor = Color.parseColor("#F6F2EE");
customTheme.bottomAppBarBackgroundColor = Color.parseColor("#F2E9E1");
customTheme.primaryIconColor = Color.parseColor("#3D2B5A");
customTheme.bottomAppBarIconColor = Color.parseColor("#3D2B5A");
customTheme.postIconAndInfoColor = Color.parseColor("#352C24");
customTheme.commentIconAndInfoColor = Color.parseColor("#352C24");
customTheme.toolbarPrimaryTextAndIconColor = Color.parseColor("#352C24");
customTheme.toolbarSecondaryTextColor = Color.parseColor("#352C24");
customTheme.circularProgressBarBackground = Color.parseColor("#F6F2EE");
customTheme.mediaIndicatorIconColor = Color.parseColor("#F6F2EE");
customTheme.mediaIndicatorBackgroundColor = Color.parseColor("#3D2B5A");
customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground = Color.parseColor("#F6F2EE");
customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor = Color.parseColor("#352C24");
customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator = Color.parseColor("#F6F2EE");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground = Color.parseColor("#F6F2EE");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor = Color.parseColor("#352C24");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator = Color.parseColor("#352C24");
customTheme.upvoted = Color.parseColor("#A5222F");
customTheme.downvoted = Color.parseColor("#4863B6");
customTheme.postTypeBackgroundColor = Color.parseColor("#4863B6");
customTheme.postTypeTextColor = Color.parseColor("#F6F2EE");
customTheme.spoilerBackgroundColor = Color.parseColor("#A440B5");
customTheme.spoilerTextColor = Color.parseColor("#F6F2EE");
customTheme.nsfwBackgroundColor = Color.parseColor("#A5222F");
customTheme.nsfwTextColor = Color.parseColor("#F6F2EE");
customTheme.flairBackgroundColor = Color.parseColor("#488D93");
customTheme.flairTextColor = Color.parseColor("#F6F2EE");
customTheme.awardsBackgroundColor = Color.parseColor("#B86E28");
customTheme.awardsTextColor = Color.parseColor("#F6F2EE");
customTheme.archivedTint = Color.parseColor("#A440B5");
customTheme.lockedIconTint = Color.parseColor("#AC5402");
customTheme.crosspostIconTint = Color.parseColor("#A5222F");
customTheme.upvoteRatioIconTint = Color.parseColor("#2848A9");
customTheme.stickiedPostIconTint = Color.parseColor("#4863B6");
customTheme.noPreviewPostTypeIconTint = Color.parseColor("#F6F2EE");
customTheme.subscribed = Color.parseColor("#A5222F");
customTheme.unsubscribed = Color.parseColor("#4863B6");
customTheme.username = Color.parseColor("#4863B6");
customTheme.subreddit = Color.parseColor("#A5222F");
customTheme.authorFlairTextColor = Color.parseColor("#A440B5");
customTheme.submitter = Color.parseColor("#AC5402");
customTheme.moderator = Color.parseColor("#577F63");
customTheme.currentUser = Color.parseColor("#488D93");
customTheme.singleCommentThreadBackgroundColor = Color.parseColor("#F2E9E1");
customTheme.unreadMessageBackgroundColor = Color.parseColor("#F6F2EE");
customTheme.dividerColor = Color.parseColor("#F2E9E1");
customTheme.noPreviewPostTypeBackgroundColor = Color.parseColor("#3D2B5A");
customTheme.voteAndReplyUnavailableButtonColor = Color.parseColor("#F6F2EE");
customTheme.commentVerticalBarColor1 = Color.parseColor("#2848A9");
customTheme.commentVerticalBarColor2 = Color.parseColor("#A440B5");
customTheme.commentVerticalBarColor3 = Color.parseColor("#4863B6");
customTheme.commentVerticalBarColor4 = Color.parseColor("#B86E28");
customTheme.commentVerticalBarColor5 = Color.parseColor("#B3434E");
customTheme.commentVerticalBarColor6 = Color.parseColor("#577F63");
customTheme.commentVerticalBarColor7 = Color.parseColor("#955F61");
customTheme.fabIconColor = Color.parseColor("#F6F2EE");
customTheme.chipTextColor = Color.parseColor("#F6F2EE");
customTheme.linkColor = Color.parseColor("#A5222F");
customTheme.receivedMessageTextColor = Color.parseColor("#3D2B5A");
customTheme.sentMessageTextColor = Color.parseColor("#F6F2EE");
customTheme.receivedMessageBackgroundColor = Color.parseColor("#F2E9E1");
customTheme.sentMessageBackgroundColor = Color.parseColor("#577F63");
customTheme.sendMessageIconColor = Color.parseColor("#4863B6");
customTheme.fullyCollapsedCommentBackgroundColor = Color.parseColor("#F2E9E1");
customTheme.awardedCommentBackgroundColor = Color.parseColor("#F6F2EE");
customTheme.navBarColor = Color.parseColor("#F6F2EE");
customTheme.isLightStatusBar = true;
customTheme.isLightNavBar = true;
customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface = false;
return customTheme;
}
private static CustomTheme getNightfox(Context context) {
CustomTheme customTheme = new CustomTheme(context.getString(R.string.theme_name_nightfox));
customTheme.isLightTheme = false;
customTheme.isDarkTheme = true;
customTheme.isAmoledTheme = false;
customTheme.colorPrimary = Color.parseColor("#2B3B51");
customTheme.colorPrimaryDark = Color.parseColor("#192330");
customTheme.colorAccent = Color.parseColor("#CDCECF");
customTheme.colorPrimaryLightTheme = Color.parseColor("#192330");
customTheme.primaryTextColor = Color.parseColor("#CDCECF");
customTheme.secondaryTextColor = Color.parseColor("#DFDFE0");
customTheme.postTitleColor = Color.parseColor("#CDCECF");
customTheme.postContentColor = Color.parseColor("#DFDFE0");
customTheme.readPostTitleColor = Color.parseColor("#738091");
customTheme.readPostContentColor = Color.parseColor("#738091");
customTheme.commentColor = Color.parseColor("#CDCECF");
customTheme.buttonTextColor = Color.parseColor("#CDCECF");
customTheme.backgroundColor = Color.parseColor("#192330");
customTheme.cardViewBackgroundColor = Color.parseColor("#2B3B51");
customTheme.readPostCardViewBackgroundColor = Color.parseColor("#2B3B51");
customTheme.commentBackgroundColor = Color.parseColor("#192330");
customTheme.bottomAppBarBackgroundColor = Color.parseColor("#2B3B51");
customTheme.primaryIconColor = Color.parseColor("#CDCECF");
customTheme.bottomAppBarIconColor = Color.parseColor("#CDCECF");
customTheme.postIconAndInfoColor = Color.parseColor("#DFDFE0");
customTheme.commentIconAndInfoColor = Color.parseColor("#DFDFE0");
customTheme.toolbarPrimaryTextAndIconColor = Color.parseColor("#CDCECF");
customTheme.toolbarSecondaryTextColor = Color.parseColor("#CDCECF");
customTheme.circularProgressBarBackground = Color.parseColor("#2B3B51");
customTheme.mediaIndicatorIconColor = Color.parseColor("#393B44");
customTheme.mediaIndicatorBackgroundColor = Color.parseColor("#CDCECF");
customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground = Color.parseColor("#2B3B51");
customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor = Color.parseColor("#CDCECF");
customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator = Color.parseColor("#2B3B51");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground = Color.parseColor("#2B3B51");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor = Color.parseColor("#CDCECF");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator = Color.parseColor("#CDCECF");
customTheme.upvoted = Color.parseColor("#DBC074");
customTheme.downvoted = Color.parseColor("#D16983");
customTheme.postTypeBackgroundColor = Color.parseColor("#719CD6");
customTheme.postTypeTextColor = Color.parseColor("#DFDFE0");
customTheme.spoilerBackgroundColor = Color.parseColor("#E0C989");
customTheme.spoilerTextColor = Color.parseColor("#393B44");
customTheme.nsfwBackgroundColor = Color.parseColor("#D16983");
customTheme.nsfwTextColor = Color.parseColor("#393B44");
customTheme.flairBackgroundColor = Color.parseColor("#9D79D6");
customTheme.flairTextColor = Color.parseColor("#DFDFE0");
customTheme.awardsBackgroundColor = Color.parseColor("#E0C989");
customTheme.awardsTextColor = Color.parseColor("#575860");
customTheme.archivedTint = Color.parseColor("#D67AD2");
customTheme.lockedIconTint = Color.parseColor("#F4A261");
customTheme.crosspostIconTint = Color.parseColor("#DBC074");
customTheme.upvoteRatioIconTint = Color.parseColor("#86ABDC");
customTheme.stickiedPostIconTint = Color.parseColor("#719CD6");
customTheme.noPreviewPostTypeIconTint = Color.parseColor("#CDCECF");
customTheme.subscribed = Color.parseColor("#D16983");
customTheme.unsubscribed = Color.parseColor("#719CD6");
customTheme.username = Color.parseColor("#86ABDC");
customTheme.subreddit = Color.parseColor("#DBC074");
customTheme.authorFlairTextColor = Color.parseColor("#D67AD2");
customTheme.submitter = Color.parseColor("#E0C989");
customTheme.moderator = Color.parseColor("#D67AD2");
customTheme.currentUser = Color.parseColor("#7AD5D6");
customTheme.singleCommentThreadBackgroundColor = Color.parseColor("#2B3B51");
customTheme.unreadMessageBackgroundColor = Color.parseColor("#393B44");
customTheme.dividerColor = Color.parseColor("#2B3B51");
customTheme.noPreviewPostTypeBackgroundColor = Color.parseColor("#D16983");
customTheme.voteAndReplyUnavailableButtonColor = Color.parseColor("#192330");
customTheme.commentVerticalBarColor1 = Color.parseColor("#719CD6");
customTheme.commentVerticalBarColor2 = Color.parseColor("#D16983");
customTheme.commentVerticalBarColor3 = Color.parseColor("#86ABDC");
customTheme.commentVerticalBarColor4 = Color.parseColor("#DBC074");
customTheme.commentVerticalBarColor5 = Color.parseColor("#C94F6D");
customTheme.commentVerticalBarColor6 = Color.parseColor("#81B27A");
customTheme.commentVerticalBarColor7 = Color.parseColor("#D16983");
customTheme.fabIconColor = Color.parseColor("#192330");
customTheme.chipTextColor = Color.parseColor("#CDCECF");
customTheme.linkColor = Color.parseColor("#DBC074");
customTheme.receivedMessageTextColor = Color.parseColor("#CDCECF");
customTheme.sentMessageTextColor = Color.parseColor("#CDCECF");
customTheme.receivedMessageBackgroundColor = Color.parseColor("#2B3B51");
customTheme.sentMessageBackgroundColor = Color.parseColor("#393B44");
customTheme.sendMessageIconColor = Color.parseColor("#C94F6D");
customTheme.fullyCollapsedCommentBackgroundColor = Color.parseColor("#2B3B51");
customTheme.awardedCommentBackgroundColor = Color.parseColor("#2B3B51");
customTheme.navBarColor = Color.parseColor("#192330");
customTheme.isLightStatusBar = false;
customTheme.isLightNavBar = false;
customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface = false;
return customTheme;
}
private static CustomTheme getCarbonfox(Context context) {
CustomTheme customTheme = new CustomTheme(context.getString(R.string.theme_name_carbonfox));
customTheme.isLightTheme = false;
customTheme.isDarkTheme = false;
customTheme.isAmoledTheme = true;
customTheme.colorPrimary = Color.parseColor("#282828");
customTheme.colorPrimaryDark = Color.parseColor("#161616");
customTheme.colorAccent = Color.parseColor("#F2F4F8");
customTheme.colorPrimaryLightTheme = Color.parseColor("#161616");
customTheme.primaryTextColor = Color.parseColor("#F2F4F8");
customTheme.secondaryTextColor = Color.parseColor("#E4E4E5");
customTheme.postTitleColor = Color.parseColor("#F2F4F8");
customTheme.postContentColor = Color.parseColor("#E4E4E5");
customTheme.readPostTitleColor = Color.parseColor("#484848");
customTheme.readPostContentColor = Color.parseColor("#484848");
customTheme.commentColor = Color.parseColor("#F2F4F8");
customTheme.buttonTextColor = Color.parseColor("#F2F4F8");
customTheme.backgroundColor = Color.parseColor("#161616");
customTheme.cardViewBackgroundColor = Color.parseColor("#282828");
customTheme.readPostCardViewBackgroundColor = Color.parseColor("#282828");
customTheme.commentBackgroundColor = Color.parseColor("#282828");
customTheme.bottomAppBarBackgroundColor = Color.parseColor("#161616");
customTheme.primaryIconColor = Color.parseColor("#F2F4F8");
customTheme.bottomAppBarIconColor = Color.parseColor("#F2F4F8");
customTheme.postIconAndInfoColor = Color.parseColor("#E4E4E5");
customTheme.commentIconAndInfoColor = Color.parseColor("#E4E4E5");
customTheme.toolbarPrimaryTextAndIconColor = Color.parseColor("#F2F4F8");
customTheme.toolbarSecondaryTextColor = Color.parseColor("#F2F4F8");
customTheme.circularProgressBarBackground = Color.parseColor("#282828");
customTheme.mediaIndicatorIconColor = Color.parseColor("#161616");
customTheme.mediaIndicatorBackgroundColor = Color.parseColor("#F2F4F8");
customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground = Color.parseColor("#282828");
customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor = Color.parseColor("#F2F4F8");
customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator = Color.parseColor("#282828");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground = Color.parseColor("#282828");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor = Color.parseColor("#F2F4F8");
customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator = Color.parseColor("#F2F4F8");
customTheme.upvoted = Color.parseColor("#F16DA6");
customTheme.downvoted = Color.parseColor("#52BDFF");
customTheme.postTypeBackgroundColor = Color.parseColor("#33B1FF");
customTheme.postTypeTextColor = Color.parseColor("#282828");
customTheme.spoilerBackgroundColor = Color.parseColor("#F16DA6");
customTheme.spoilerTextColor = Color.parseColor("#282828");
customTheme.nsfwBackgroundColor = Color.parseColor("#F16DA6");
customTheme.nsfwTextColor = Color.parseColor("#282828");
customTheme.flairBackgroundColor = Color.parseColor("#3DDBD9");
customTheme.flairTextColor = Color.parseColor("#282828");
customTheme.awardsBackgroundColor = Color.parseColor("#3DDBD9");
customTheme.awardsTextColor = Color.parseColor("#282828");
customTheme.archivedTint = Color.parseColor("#EE5396");
customTheme.lockedIconTint = Color.parseColor("#EE5396");
customTheme.crosspostIconTint = Color.parseColor("#F16DA6");
customTheme.upvoteRatioIconTint = Color.parseColor("#33B1FF");
customTheme.stickiedPostIconTint = Color.parseColor("#33B1FF");
customTheme.noPreviewPostTypeIconTint = Color.parseColor("#F2F4F8");
customTheme.subscribed = Color.parseColor("#F16DA6");
customTheme.unsubscribed = Color.parseColor("#33B1FF");
customTheme.username = Color.parseColor("#52BDFF");
customTheme.subreddit = Color.parseColor("#F16DA6");
customTheme.authorFlairTextColor = Color.parseColor("#F16DA6");
customTheme.submitter = Color.parseColor("#3DDBD9");
customTheme.moderator = Color.parseColor("#25BE6A");
customTheme.currentUser = Color.parseColor("#2DC7C4");
customTheme.singleCommentThreadBackgroundColor = Color.parseColor("#484848");
customTheme.unreadMessageBackgroundColor = Color.parseColor("#484848");
customTheme.dividerColor = Color.parseColor("#484848");
customTheme.noPreviewPostTypeBackgroundColor = Color.parseColor("#161616");
customTheme.voteAndReplyUnavailableButtonColor = Color.parseColor("#484848");
customTheme.commentVerticalBarColor1 = Color.parseColor("#33B1FF");
customTheme.commentVerticalBarColor2 = Color.parseColor("#C8A5FF");
customTheme.commentVerticalBarColor3 = Color.parseColor("#2DC7C4");
customTheme.commentVerticalBarColor4 = Color.parseColor("#78A9FF");
customTheme.commentVerticalBarColor5 = Color.parseColor("#EE5396");
customTheme.commentVerticalBarColor6 = Color.parseColor("#25BE6A");
customTheme.commentVerticalBarColor7 = Color.parseColor("#FF7EB6");
customTheme.fabIconColor = Color.parseColor("#161616");
customTheme.chipTextColor = Color.parseColor("#282828");
customTheme.linkColor = Color.parseColor("#F16DA6");
customTheme.receivedMessageTextColor = Color.parseColor("#F2F4F8");
customTheme.sentMessageTextColor = Color.parseColor("#F2F4F8");
customTheme.receivedMessageBackgroundColor = Color.parseColor("#484848");
customTheme.sentMessageBackgroundColor = Color.parseColor("#46C880");
customTheme.sendMessageIconColor = Color.parseColor("#52BDFF");
customTheme.fullyCollapsedCommentBackgroundColor = Color.parseColor("#484848");
customTheme.awardedCommentBackgroundColor = Color.parseColor("#282828");
customTheme.navBarColor = Color.parseColor("#161616");
customTheme.isLightStatusBar = false;
customTheme.isLightNavBar = false;
customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface = false;
return customTheme;
}
public static int darkenColor(int color, float factor) {
int a = Color.alpha(color);
int r = Math.round(Color.red(color) * factor);

View File

@@ -2,6 +2,7 @@ package eu.toldi.infinityforlemmy.fragments;
import android.content.Context;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -9,15 +10,20 @@ import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.evernote.android.state.State;
import com.google.android.material.card.MaterialCardView;
import java.util.concurrent.Executor;
import javax.inject.Inject;
@@ -31,15 +37,18 @@ import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.activities.LinkResolverActivity;
import eu.toldi.infinityforlemmy.activities.ViewSubredditDetailActivity;
import eu.toldi.infinityforlemmy.adapters.ModeratorRecyclerViewAdapter;
import eu.toldi.infinityforlemmy.asynctasks.InsertSubredditData;
import eu.toldi.infinityforlemmy.bottomsheetfragments.CopyTextBottomSheetFragment;
import eu.toldi.infinityforlemmy.bottomsheetfragments.UrlMenuBottomSheetFragment;
import eu.toldi.infinityforlemmy.community.CommunityStats;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.markdown.MarkdownUtils;
import eu.toldi.infinityforlemmy.subreddit.FetchSubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditViewModel;
import eu.toldi.infinityforlemmy.user.BasicUserRecyclerViewAdapter;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
@@ -55,11 +64,50 @@ public class SidebarFragment extends Fragment {
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
public static final String EXTRA_ACCESS_TOKEN = "EAT";
public static final String EXTRA_COMMUNITY_QUALIFIED_NAME = "ECQN";
public static final String EXTRA_SHOW_STATISTICS = "ESS";
public SubredditViewModel mSubredditViewModel;
@BindView(R.id.swipe_refresh_layout_sidebar_fragment)
SwipeRefreshLayout swipeRefreshLayout;
@BindView(R.id.markdown_recycler_view_sidebar_fragment)
RecyclerView recyclerView;
@BindView(R.id.recycler_view_moderators_side_fragment)
RecyclerView moderatorsRecyclerView;
@BindView(R.id.subscriber_count_text_view_sidebar_fragment)
TextView nSubscribersTextView;
@BindView(R.id.active_user_count_text_view_sidebar_fragment)
TextView nActiveUsersTextView;
@BindView(R.id.post_count_text_view_sidebar_fragment)
TextView nPostsTextView;
@BindView(R.id.comment_count_text_view_sidebar_fragment)
TextView nCommentsTextView;
@BindView(R.id.subscriber_count_image_view_sidebar_fragment)
ImageView nSubscribersImageView;
@BindView(R.id.active_user_count_image_view_sidebar_fragment)
ImageView nActiveUsersImageView;
@BindView(R.id.post_count_image_view_sidebar_fragment)
ImageView nPostsImageView;
@BindView(R.id.comment_count_image_view_sidebar_fragment)
ImageView nCommentsImageView;
@BindView(R.id.community_statistics_block_sidebar_fragment)
ConstraintLayout communityStatisticsBlock;
@BindView(R.id.moderators_text_view_sidebar_fragment)
TextView moderatorsTextView;
@BindView(R.id.moderators_card_sidebar_fragment)
MaterialCardView moderatorsCard;
@BindView(R.id.description_card_sidebar_fragment)
MaterialCardView descriptionCard;
@BindView(R.id.statistics_card_sidebar_fragment)
MaterialCardView statisticsCard;
@Inject
@Named("no_oauth")
RetrofitHolder mRetrofit;
@@ -76,11 +124,17 @@ public class SidebarFragment extends Fragment {
private String mAccessToken;
private String subredditName;
private boolean mShowStatistics;
private String communityQualifiedName;
private LinearLayoutManagerBugFixed linearLayoutManager;
private int markdownColor;
private String sidebarDescription;
@State
CommunityStats mCommunityStats;
private BasicUserRecyclerViewAdapter moderatorAdapter;
public SidebarFragment() {
// Required empty public constructor
}
@@ -98,6 +152,7 @@ public class SidebarFragment extends Fragment {
mAccessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME);
communityQualifiedName = getArguments().getString(EXTRA_COMMUNITY_QUALIFIED_NAME);
mShowStatistics = getArguments().getBoolean(EXTRA_SHOW_STATISTICS, true);
if (communityQualifiedName == null) {
Toast.makeText(activity, R.string.error_getting_community_name, Toast.LENGTH_SHORT).show();
return rootView;
@@ -105,6 +160,27 @@ public class SidebarFragment extends Fragment {
swipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground());
swipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
int mCardViewBackgroundColor = mCustomThemeWrapper.getCardViewBackgroundColor();
int primaryTextColor = mCustomThemeWrapper.getPrimaryTextColor();
nSubscribersTextView.setTextColor(primaryTextColor);
nActiveUsersTextView.setTextColor(primaryTextColor);
nPostsTextView.setTextColor(primaryTextColor);
nCommentsTextView.setTextColor(primaryTextColor);
moderatorsTextView.setTextColor(primaryTextColor);
moderatorsTextView.setTypeface(activity.contentTypeface);
nSubscribersImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
nActiveUsersImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
nPostsImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
nCommentsImageView.setColorFilter(mCustomThemeWrapper.getPrimaryTextColor(), PorterDuff.Mode.SRC_IN);
moderatorsCard.setCardBackgroundColor(mCardViewBackgroundColor);
descriptionCard.setCardBackgroundColor(mCardViewBackgroundColor);
if (mShowStatistics) {
statisticsCard.setCardBackgroundColor(mCardViewBackgroundColor);
} else {
statisticsCard.setVisibility(View.GONE);
}
markdownColor = mCustomThemeWrapper.getPrimaryTextColor();
int spoilerBackgroundColor = markdownColor | 0xFF000000;
@@ -166,6 +242,11 @@ public class SidebarFragment extends Fragment {
}
});
moderatorsRecyclerView.setLayoutManager(new LinearLayoutManagerBugFixed(activity));
moderatorAdapter = new ModeratorRecyclerViewAdapter(activity,
mCustomThemeWrapper);
moderatorsRecyclerView.setAdapter(moderatorAdapter);
mSubredditViewModel = new ViewModelProvider(activity,
new SubredditViewModel.Factory(activity.getApplication(), mRedditDataRoomDatabase, LemmyUtils.qualifiedCommunityName2ActorId(communityQualifiedName)))
.get(SubredditViewModel.class);
@@ -180,6 +261,16 @@ public class SidebarFragment extends Fragment {
} else {
fetchSubredditData();
}
if (mCommunityStats != null) {
communityStatisticsBlock.setVisibility(View.VISIBLE);
nSubscribersTextView.setText(getString(R.string.subscribers_number_detail, mCommunityStats.getSubscribers()));
nActiveUsersTextView.setText(getString(R.string.active_users_number_detail, mCommunityStats.getActiveUsers()));
nPostsTextView.setText(getString(R.string.post_count_detail, mCommunityStats.getPosts()));
nCommentsTextView.setText(getString(R.string.comment_count_detail, mCommunityStats.getComments()));
} else {
fetchSubredditData();
}
});
swipeRefreshLayout.setOnRefreshListener(this::fetchSubredditData);
@@ -199,6 +290,8 @@ public class SidebarFragment extends Fragment {
@Override
public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
swipeRefreshLayout.setRefreshing(false);
mCommunityStats = subredditData.getCommunityStats();
moderatorAdapter.setUsers(subredditData.getModerators());
InsertSubredditData.insertSubredditData(mExecutor, new Handler(), mRedditDataRoomDatabase,
subredditData, () -> swipeRefreshLayout.setRefreshing(false));
}

View File

@@ -157,16 +157,16 @@ public class SubscribedSubredditsListingFragment extends Fragment implements Fra
adapter.setSubscribedSubreddits(subscribedSubredditData);
});
/* mSubscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(getViewLifecycleOwner(), favoriteSubscribedSubredditData -> {
mSwipeRefreshLayout.setRefreshing(false);
if (favoriteSubscribedSubredditData != null && favoriteSubscribedSubredditData.size() > 0) {
mLinearLayout.setVisibility(View.GONE);
mRecyclerView.setVisibility(View.VISIBLE);
mGlide.clear(mImageView);
}
mSubscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(getViewLifecycleOwner(), favoriteSubscribedSubredditData -> {
mSwipeRefreshLayout.setRefreshing(false);
if (favoriteSubscribedSubredditData != null && favoriteSubscribedSubredditData.size() > 0) {
mLinearLayout.setVisibility(View.GONE);
mRecyclerView.setVisibility(View.VISIBLE);
mGlide.clear(mImageView);
}
adapter.setFavoriteSubscribedSubreddits(favoriteSubscribedSubredditData);
});*/
adapter.setFavoriteSubscribedSubreddits(favoriteSubscribedSubredditData);
});
return rootView;
}

View File

@@ -620,7 +620,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
mSharedPreferences, mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences, mPostDetailsSharedPreferences,
mExoCreator, post -> EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)));
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
this, mCustomThemeWrapper, mExecutor, mRetrofit.getRetrofit(),
this, mCustomThemeWrapper, mExecutor, mRetrofit,
mAccessToken, mAccountQualifiedName, mPost, mLocale, mSingleCommentId
, isSingleCommentThreadMode, mSharedPreferences, mCurrentAccountSharedPreferences,
new CommentsRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
@@ -1351,7 +1351,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
pages_loaded++;
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
ViewPostDetailFragment.this, mCustomThemeWrapper, mExecutor,
mRetrofit.getRetrofit(), mAccessToken, mAccountQualifiedName, mPost, mLocale,
mRetrofit, mAccessToken, mAccountQualifiedName, mPost, mLocale,
mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences, mCurrentAccountSharedPreferences,
new CommentsRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
@Override

View File

@@ -1,5 +1,6 @@
package eu.toldi.infinityforlemmy.markdown;
import android.app.Activity;
import android.content.Context;
import android.text.util.Linkify;
@@ -29,16 +30,17 @@ import me.saket.bettermovementmethod.BetterLinkMovementMethod;
public class MarkdownUtils {
/**
* Creates a Markwon instance with all the plugins required for processing Reddit's markdown.
*
* @return configured Markwon instance
*/
@NonNull
public static Markwon createFullRedditMarkwon(@NonNull Context context,
public static Markwon createFullRedditMarkwon(@NonNull Activity context,
@NonNull MarkwonPlugin miscPlugin,
int markdownColor,
int spoilerBackgroundColor,
@Nullable BetterLinkMovementMethod.OnLinkLongClickListener onLinkLongClickListener) {
return Markwon.builder(context)
.usePlugin(GlideImagesPlugin.create(context))
.usePlugin(GlideImagesPlugin.create(context.getApplicationContext()))
.usePlugin(MarkwonInlineParserPlugin.create(plugin -> {
plugin.excludeInlineProcessor(HtmlInlineProcessor.class);
}))
@@ -57,7 +59,7 @@ public class MarkdownUtils {
}
@NonNull
public static Markwon createDescriptionMarkwon(Context context, MarkwonPlugin miscPlugin,
public static Markwon createDescriptionMarkwon(Activity context, MarkwonPlugin miscPlugin,
BetterLinkMovementMethod.OnLinkLongClickListener onLinkLongClickListener) {
return Markwon.builder(context)
.usePlugin(MarkwonInlineParserPlugin.create(plugin -> {
@@ -71,7 +73,7 @@ public class MarkdownUtils {
.setOnLinkLongClickListener(onLinkLongClickListener)))
.usePlugin(LinkifyPlugin.create(Linkify.WEB_URLS))
.usePlugin(TableEntryPlugin.create(context))
.usePlugin(GlideImagesPlugin.create(context))
.usePlugin(GlideImagesPlugin.create(context.getApplicationContext()))
.usePlugin(new MarkwonLemmyLinkPlugin())
.build();
}

View File

@@ -68,7 +68,7 @@ public class AboutPreferenceFragment extends CustomFontPreferenceFragmentCompat
if (subredditPreference != null) {
subredditPreference.setOnPreferenceClickListener(preference -> {
Intent intent = new Intent(activity, LinkResolverActivity.class);
intent.setData(Uri.parse("https://lemdro.id/c/infinityforlemmy"));
intent.setData(Uri.parse("https://lemdro.id/c/eternityapp"));
activity.startActivity(intent);
return true;
});

View File

@@ -1,8 +1,15 @@
package eu.toldi.infinityforlemmy.site;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import eu.toldi.infinityforlemmy.user.BasicUserInfo;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
public class SiteInfo {
private int id;
@@ -13,7 +20,11 @@ public class SiteInfo {
private boolean enable_nsfw;
private boolean community_creation_admin_only;
public SiteInfo(int id, String name, String sidebar, String description, boolean enable_downvotes, boolean enable_nsfw, boolean community_creation_admin_only) {
private List<BasicUserInfo> admins;
SiteStatistics siteStatistics;
public SiteInfo(int id, String name, String sidebar, String description, boolean enable_downvotes, boolean enable_nsfw, boolean community_creation_admin_only, List<BasicUserInfo> admins, SiteStatistics siteStatistics) {
this.id = id;
this.name = name;
this.sidebar = sidebar;
@@ -21,6 +32,8 @@ public class SiteInfo {
this.enable_downvotes = enable_downvotes;
this.enable_nsfw = enable_nsfw;
this.community_creation_admin_only = community_creation_admin_only;
this.admins = admins;
this.siteStatistics = siteStatistics;
}
public int getId() {
@@ -51,6 +64,14 @@ public class SiteInfo {
return community_creation_admin_only;
}
public List<BasicUserInfo> getAdmins() {
return admins;
}
public SiteStatistics getSiteStatistics() {
return siteStatistics;
}
public static SiteInfo parseSiteInfo(String siteInfoJson) {
try {
JSONObject siteInfo = new JSONObject(siteInfoJson);
@@ -72,9 +93,20 @@ public class SiteInfo {
boolean enable_nsfw = localSite.getBoolean("enable_nsfw");
boolean community_creation_admin_only = localSite.getBoolean("community_creation_admin_only");
SiteInfo si = new SiteInfo(id, name, sidebar, description, enable_downvotes, enable_nsfw, community_creation_admin_only);
JSONObject counts = siteView.getJSONObject("counts");
List<BasicUserInfo> admins = new ArrayList<>();
if (siteInfo.has("admins")) {
JSONArray adminsJson = siteInfo.getJSONArray("admins");
for (int i = 0; i < adminsJson.length(); i++) {
JSONObject adminJson = adminsJson.getJSONObject(i).getJSONObject("person");
admins.add(new BasicUserInfo(adminJson.getInt("id"), adminJson.getString("name"),
LemmyUtils.actorID2FullName(adminJson.getString("actor_id")), adminJson.optString("avatar ", ""),
adminJson.optString("display_name", adminJson.getString("name")))
);
}
}
return si;
return new SiteInfo(id, name, sidebar, description, enable_downvotes, enable_nsfw, community_creation_admin_only, admins, SiteStatistics.parseSiteStatistics(counts));
} catch (JSONException e) {
e.printStackTrace();
return null;

View File

@@ -0,0 +1,55 @@
package eu.toldi.infinityforlemmy.site;
import org.json.JSONException;
import org.json.JSONObject;
public class SiteStatistics {
private final int users;
private final int posts;
private final int comments;
private final int communities;
private final int users_active;
public SiteStatistics(int users, int posts, int comments, int communities, int users_active) {
this.users = users;
this.posts = posts;
this.comments = comments;
this.communities = communities;
this.users_active = users_active;
}
public int getUsers() {
return users;
}
public int getPosts() {
return posts;
}
public int getComments() {
return comments;
}
public int getCommunities() {
return communities;
}
public int getUsers_active() {
return users_active;
}
public static SiteStatistics parseSiteStatistics(JSONObject countsJson) {
try {
int users = countsJson.getInt("users");
int posts = countsJson.getInt("posts");
int comments = countsJson.getInt("comments");
int communities = countsJson.getInt("communities");
int users_active = countsJson.getInt("users_active_month");
return new SiteStatistics(users, posts, comments, communities, users_active);
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
}

View File

@@ -112,7 +112,7 @@ public class CommunitySubscription {
SubredditSubscriptionListener subredditSubscriptionListener) {
executor.execute(() -> {
SubscribedSubredditData subscribedSubredditData = new SubscribedSubredditData(subredditData.getId(), subredditData.getName(), LemmyUtils.actorID2FullName(subredditData.getActorId()),
subredditData.getIconUrl(), accountName);
subredditData.getIconUrl(), accountName, false);
if (accountName.equals("-")) {
if (!redditDataRoomDatabase.accountDao().isAnonymousAccountInserted()) {
redditDataRoomDatabase.accountDao().insert(Account.getAnonymousAccount());

View File

@@ -16,7 +16,9 @@ import java.util.Locale;
import java.util.TimeZone;
import eu.toldi.infinityforlemmy.community.CommunityStats;
import eu.toldi.infinityforlemmy.user.BasicUserInfo;
import eu.toldi.infinityforlemmy.utils.JSONUtils;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
public class ParseSubredditData {
public static void parseSubredditData(String response, ParseSubredditDataListener parseSubredditDataListener) {
@@ -80,7 +82,6 @@ public class ParseSubredditData {
int commentCount = counts.getInt("comments");
stats = new CommunityStats(subscribers, activeUserCount, postCount, commentCount);
}
return new SubredditData(id, name, title, description, removed, published, updated, deleted, isNSFW, actorId, local, iconUrl, bannerImageUrl, hidden, postingRestrictedToMods, instanceId, subscribers, blocked, stats);
}
@@ -120,6 +121,16 @@ public class ParseSubredditData {
JSONObject data = jsonResponse.getJSONObject("community_view");
mNCurrentOnlineSubscribers = 0;// data.getInt(JSONUtils.ACTIVE_USER_COUNT_KEY);
subredditData = parseSubredditData(data, true);
JSONArray moderators = jsonResponse.getJSONArray("moderators");
for (int i = 0; i < moderators.length(); i++) {
JSONObject moderator = moderators.getJSONObject(i).getJSONObject("moderator");
int mod_id = moderator.getInt("id");
String mod_name = moderator.getString("name");
String mod_displayName = moderator.optString("display_name", mod_name);
String mod_qualified_name = LemmyUtils.actorID2FullName(moderator.getString("actor_id"));
String avatarUrl = moderator.optString("avatar", "");
subredditData.addModerator(new BasicUserInfo(mod_id, mod_name, mod_qualified_name, avatarUrl, mod_displayName));
}
} catch (JSONException e) {
parseFailed = true;
e.printStackTrace();

View File

@@ -9,7 +9,11 @@ import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import java.util.ArrayList;
import java.util.List;
import eu.toldi.infinityforlemmy.community.CommunityStats;
import eu.toldi.infinityforlemmy.user.BasicUserInfo;
@Entity(tableName = "subreddits")
public class SubredditData implements Parcelable {
@@ -76,6 +80,9 @@ public class SubredditData implements Parcelable {
@Ignore
private CommunityStats communityStats;
@Ignore
private List<BasicUserInfo> moderators = new ArrayList<>();
protected SubredditData(Parcel in) {
id = in.readInt();
name = in.readString();
@@ -366,4 +373,12 @@ public class SubredditData implements Parcelable {
public void setCommunityStats(CommunityStats communityStats) {
this.communityStats = communityStats;
}
public List<BasicUserInfo> getModerators() {
return moderators;
}
public void addModerator(BasicUserInfo moderator) {
moderators.add(moderator);
}
}

View File

@@ -33,4 +33,7 @@ public interface SubscribedSubredditDao {
@Query("DELETE FROM subscribed_subreddits WHERE name = :subredditName COLLATE NOCASE AND username = :accountName COLLATE NOCASE")
void deleteSubscribedSubreddit(String subredditName, String accountName);
@Query("SELECT * from subscribed_subreddits WHERE username = :qualified_name AND name LIKE '%' || :searchQuery || '%' COLLATE NOCASE AND is_favorite = 1 ORDER BY name COLLATE NOCASE ASC")
LiveData<List<SubscribedSubredditData>> getAllFavoriteSubscribedSubredditsWithSearchQuery(String qualified_name, String searchQuery);
}

View File

@@ -4,6 +4,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
@@ -30,12 +31,16 @@ public class SubscribedSubredditData implements Parcelable {
@ColumnInfo(name = "username")
private String username;
public SubscribedSubredditData(@NonNull int id, String name, @NonNull String qualified_name, String iconUrl, @NonNull String username) {
@ColumnInfo(name = "is_favorite")
private boolean favorite;
public SubscribedSubredditData(@NonNull int id, String name, @NonNull String qualified_name, String iconUrl, @NonNull String username, boolean favorite) {
this.id = id;
this.name = name;
this.iconUrl = iconUrl;
this.username = username;
this.qualified_name = qualified_name;
this.favorite = favorite;
}
public SubscribedSubredditData(@NonNull SubredditData communityData) {
@@ -44,6 +49,7 @@ public class SubscribedSubredditData implements Parcelable {
this.iconUrl = communityData.getIconUrl();
this.username = "-";
this.qualified_name = LemmyUtils.actorID2FullName(communityData.getActorId());
this.favorite = false;
}
@NonNull
@@ -89,6 +95,7 @@ public class SubscribedSubredditData implements Parcelable {
parcel.writeString(iconUrl);
parcel.writeString(username);
parcel.writeString(qualified_name);
parcel.writeByte((byte) (favorite ? 1 : 0));
}
public SubscribedSubredditData(Parcel in) {
@@ -97,6 +104,7 @@ public class SubscribedSubredditData implements Parcelable {
iconUrl = in.readString();
username = in.readString();
qualified_name = in.readString();
favorite = in.readByte() != 0;
}
public static final Creator<SubscribedSubredditData> CREATOR = new Creator<>() {
@@ -110,4 +118,25 @@ public class SubscribedSubredditData implements Parcelable {
return new SubscribedSubredditData[size];
}
};
public boolean isFavorite() {
return favorite;
}
public void setFavorite(boolean favorite) {
this.favorite = favorite;
}
@Override
public int hashCode() {
return id;
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj instanceof SubscribedSubredditData) {
return id == ((SubscribedSubredditData) obj).getId();
}
return false;
}
}

View File

@@ -21,6 +21,10 @@ public class SubscribedSubredditRepository {
return mSubscribedSubredditDao.getAllSubscribedSubredditsWithSearchQuery(mAccountName, searchQuery);
}
public LiveData<List<SubscribedSubredditData>> getAllFavoriteSubscribedSubredditsWithSearchQuery(String searchQuery) {
return mSubscribedSubredditDao.getAllFavoriteSubscribedSubredditsWithSearchQuery(mAccountName, searchQuery);
}
public void insert(SubscribedSubredditData subscribedSubredditData) {
new insertAsyncTask(mSubscribedSubredditDao).execute(subscribedSubredditData);
}

View File

@@ -17,6 +17,7 @@ import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
public class SubscribedSubredditViewModel extends AndroidViewModel {
private SubscribedSubredditRepository mSubscribedSubredditRepository;
private LiveData<List<SubscribedSubredditData>> mAllSubscribedSubreddits;
private LiveData<List<SubscribedSubredditData>> mAllFavoriteSubscribedSubreddits;
private MutableLiveData<String> searchQueryLiveData;
public SubscribedSubredditViewModel(Application application, RedditDataRoomDatabase redditDataRoomDatabase, String accountName) {
@@ -26,12 +27,17 @@ public class SubscribedSubredditViewModel extends AndroidViewModel {
searchQueryLiveData.postValue("");
mAllSubscribedSubreddits = Transformations.switchMap(searchQueryLiveData, searchQuery -> mSubscribedSubredditRepository.getAllSubscribedSubredditsWithSearchQuery(searchQuery));
mAllFavoriteSubscribedSubreddits = Transformations.switchMap(searchQueryLiveData, searchQuery -> mSubscribedSubredditRepository.getAllFavoriteSubscribedSubredditsWithSearchQuery(searchQuery));
}
public LiveData<List<SubscribedSubredditData>> getAllSubscribedSubreddits() {
return mAllSubscribedSubreddits;
}
public LiveData<List<SubscribedSubredditData>> getAllFavoriteSubscribedSubreddits() {
return mAllFavoriteSubscribedSubreddits;
}
public void insert(SubscribedSubredditData subscribedSubredditData) {
mSubscribedSubredditRepository.insert(subscribedSubredditData);
}

View File

@@ -0,0 +1,139 @@
package eu.toldi.infinityforlemmy.user;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.request.RequestOptions;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.activities.ViewUserDetailActivity;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import me.zhanghai.android.fastscroll.PopupTextProvider;
import pl.droidsonroids.gif.GifImageView;
public class BasicUserRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements PopupTextProvider {
private static final int VIEW_TYPE_FAVORITE_USER_DIVIDER = 0;
private static final int VIEW_TYPE_FAVORITE_USER = 1;
private static final int VIEW_TYPE_USER_DIVIDER = 2;
private static final int VIEW_TYPE_USER = 3;
private List<BasicUserInfo> basicUserInfo;
private BaseActivity mActivity;
private RequestManager glide;
private int mPrimaryTextColor;
private int mSecondaryTextColor;
public BasicUserRecyclerViewAdapter(BaseActivity activity,
CustomThemeWrapper customThemeWrapper) {
mActivity = activity;
glide = Glide.with(activity);
mPrimaryTextColor = customThemeWrapper.getPrimaryTextColor();
mSecondaryTextColor = customThemeWrapper.getSecondaryTextColor();
}
@Override
public int getItemViewType(int position) {
return VIEW_TYPE_USER;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new UserViewHolder(LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.item_subscribed_thing, viewGroup, false));
}
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, int i) {
if (viewHolder instanceof UserViewHolder) {
if (!basicUserInfo.get(viewHolder.getBindingAdapterPosition()).getAvatar().equals("")) {
glide.load(basicUserInfo.get(viewHolder.getBindingAdapterPosition()).getAvatar())
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
.error(glide.load(R.drawable.subreddit_default_icon)
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
.into(((UserViewHolder) viewHolder).iconGifImageView);
} else {
glide.load(R.drawable.subreddit_default_icon)
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
.into(((UserViewHolder) viewHolder).iconGifImageView);
}
((UserViewHolder) viewHolder).userNameTextView.setText(basicUserInfo.get(viewHolder.getBindingAdapterPosition()).getDisplayName());
}
}
@Override
public int getItemCount() {
if (basicUserInfo != null && basicUserInfo.size() > 0) {
return basicUserInfo.size();
}
return 0;
}
@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
if (holder instanceof UserViewHolder) {
glide.clear(((UserViewHolder) holder).iconGifImageView);
}
}
public void setUsers(List<BasicUserInfo> subscribedUsers) {
basicUserInfo = subscribedUsers;
notifyDataSetChanged();
}
@NonNull
@Override
public String getPopupText(int position) {
return basicUserInfo.get(position).getQualifiedName().substring(0, 1).toUpperCase();
}
protected int getUserNameTextColor() {
return mPrimaryTextColor;
}
protected class UserViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.thing_icon_gif_image_view_item_subscribed_thing)
GifImageView iconGifImageView;
@BindView(R.id.thing_name_text_view_item_subscribed_thing)
TextView userNameTextView;
protected UserViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
if (mActivity.typeface != null) {
userNameTextView.setTypeface(mActivity.typeface);
}
userNameTextView.setTextColor(getUserNameTextColor());
itemView.setOnClickListener(view -> {
int position = getBindingAdapterPosition();
if (position >= 0 && basicUserInfo.size() > position) {
Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, basicUserInfo.get(position).getDisplayName());
intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, basicUserInfo.get(position).getQualifiedName());
mActivity.startActivity(intent);
}
});
}
}
}

View File

@@ -56,6 +56,9 @@ public class SharedPreferencesUtils {
public static final String POST_DISPLAY_NAME_INSTEAD_OF_USERNAME = "post_display_name_instead_of_user_name";
public static final String COMMENT_DISPLAY_NAME_INSTEAD_OF_USERNAME = "comment_display_name_instead_of_user_name";
public static final String COMMENT_HIDE_USER_INSTANCE = "comment_hide_user_instance";
public static final String POST_DETAIL_DISPLAY_NAME_INSTEAD_OF_USERNAME = "post_detail_display_name_instead_of_user_name";
public static final String SORT_TYPE_SHARED_PREFERENCES_FILE = "eu.toldi.infinityforlemmy.sort_type";
@@ -411,4 +414,6 @@ public class SharedPreferencesUtils {
public static final String ACCOUNT_INSTANCE = "account_instance";
public static final String ACCOUNT_QUALIFIED_NAME = "account_qualified_name";
public static final String CAN_DOWNVOTE = "can_downvote";
public static final String SHOW_STATISTICS = "show_statistics";
public static final String SHOW_POST_AND_COMMENT_SCORE = "show_score";
}

View File

@@ -0,0 +1,10 @@
<vector android:height="24dp"
android:tint="#000000"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<path
android:fillColor="@android:color/white"
android:pathData="M12,12.75c1.63,0 3.07,0.39 4.24,0.9c1.08,0.48 1.76,1.56 1.76,2.73L18,18H6l0,-1.61c0,-1.18 0.68,-2.26 1.76,-2.73C8.93,13.14 10.37,12.75 12,12.75zM4,13c1.1,0 2,-0.9 2,-2c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2C2,12.1 2.9,13 4,13zM5.13,14.1C4.76,14.04 4.39,14 4,14c-0.99,0 -1.93,0.21 -2.78,0.58C0.48,14.9 0,15.62 0,16.43V18l4.5,0v-1.61C4.5,15.56 4.73,14.78 5.13,14.1zM20,13c1.1,0 2,-0.9 2,-2c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2C18,12.1 18.9,13 20,13zM24,16.43c0,-0.81 -0.48,-1.53 -1.22,-1.85C21.93,14.21 20.99,14 20,14c-0.39,0 -0.76,0.04 -1.13,0.1c0.4,0.68 0.63,1.46 0.63,2.29V18l4.5,0V16.43zM12,6c1.66,0 3,1.34 3,3c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3C9,7.34 10.34,6 12,6z" />
</vector>

View File

@@ -79,7 +79,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp">
android:layout_marginBottom="16dp"
android:visibility="gone"
android:id="@+id/community_statistics_block_view_subreddit_detail_activity">
<ImageView
android:id="@+id/subscriber_count_image_view_view_subreddit_detail_activity"

View File

@@ -85,7 +85,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:visibility="gone"
android:id="@+id/user_statistics_block_view_user_detail_activity">
<TextView
android:id="@+id/post_stats_text_view_view_user_detail_activity"

View File

@@ -76,10 +76,12 @@
app:chipStrokeColor="#00000000" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/community_statistics_block_view_subreddit_detail_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp">
android:layout_marginBottom="16dp"
android:visibility="gone">
<ImageView
android:id="@+id/subscriber_count_image_view_view_subreddit_detail_activity"

View File

@@ -85,7 +85,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:visibility="gone"
android:id="@+id/user_statistics_block_view_user_detail_activity">
<TextView
android:id="@+id/post_stats_text_view_view_user_detail_activity"

View File

@@ -0,0 +1,245 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinator_layout_instance_info_activity"
tools:application="eu.toldi.infinityforlemmy.activities.InstanceInfoActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout_instance_info_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar_instance_info_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:navigationIcon="?attr/homeAsUpIndicator" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/loading_layout_instance_info_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.card.MaterialCardView
android:id="@+id/moderators_card_instance_info_activity"
style="?attr/materialCardViewElevatedStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:visibility="gone"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/moderators_text_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/admins"
android:textSize="16sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_admins_instance_info_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:visibility="visible" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/statistics_card_instance_info_activity"
style="?attr/materialCardViewElevatedStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:visibility="gone"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/community_statistics_block_instance_info_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:visibility="visible">
<ImageView
android:id="@+id/registered_user_count_image_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_person_24" />
<TextView
android:id="@+id/registered_user_count_text_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:text="@string/user_number_detail"
app:layout_constraintStart_toEndOf="@+id/registered_user_count_image_view_instance_info_activity"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<ImageView
android:id="@+id/active_user_count_image_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="@+id/guideline7"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_bolt_24" />
<TextView
android:id="@+id/active_user_count_text_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_instance_info_activity"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/post_count_image_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/registered_user_count_image_view_instance_info_activity"
app:srcCompat="@drawable/ic_post_add_24" />
<TextView
android:id="@+id/post_count_text_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:text="@string/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_instance_info_activity"
app:layout_constraintTop_toBottomOf="@+id/registered_user_count_image_view_instance_info_activity" />
<ImageView
android:id="@+id/comment_count_image_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="@+id/guideline7"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_instance_info_activity"
app:srcCompat="@drawable/ic_comment_black_24" />
<TextView
android:id="@+id/comment_count_text_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:text="@string/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_instance_info_activity"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_instance_info_activity" />
<ImageView
android:id="@+id/communities_icon_image_view_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/post_count_image_view_instance_info_activity"
app:srcCompat="@drawable/ic_groups_24" />
<TextView
android:id="@+id/community_count_instance_info_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:text="@string/community_number_detail"
app:layout_constraintStart_toEndOf="@+id/communities_icon_image_view_instance_info_activity"
app:layout_constraintTop_toBottomOf="@+id/post_count_image_view_instance_info_activity" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/description_card_instance_info_activity"
style="?attr/materialCardViewElevatedStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:visibility="gone"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/markdown_recycler_view_instance_info_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="144dp"
android:visibility="visible" />
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -78,7 +78,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp">
android:layout_marginBottom="16dp"
android:visibility="gone"
android:id="@+id/community_statistics_block_view_subreddit_detail_activity">
<ImageView
android:id="@+id/subscriber_count_image_view_view_subreddit_detail_activity"

View File

@@ -85,7 +85,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:visibility="gone"
android:id="@+id/user_statistics_block_view_user_detail_activity">
<TextView
android:id="@+id/post_stats_text_view_view_user_detail_activity"

View File

@@ -8,19 +8,188 @@
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout_sidebar_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/markdown_recycler_view_sidebar_fragment"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="8dp"
android:paddingBottom="144dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:clipToPadding="false" />
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.card.MaterialCardView
android:id="@+id/moderators_card_sidebar_fragment"
style="?attr/materialCardViewElevatedStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/moderators_text_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/moderators"
android:textSize="16sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_moderators_side_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
style="?attr/materialCardViewElevatedStyle"
android:id="@+id/description_card_sidebar_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/markdown_recycler_view_sidebar_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="144dp" />
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
style="?attr/materialCardViewElevatedStyle"
android:id="@+id/statistics_card_sidebar_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/community_statistics_block_sidebar_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:visibility="gone">
<ImageView
android:id="@+id/subscriber_count_image_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_person_24" />
<TextView
android:id="@+id/subscriber_count_text_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:text="@string/subscribers_number_detail"
app:layout_constraintStart_toEndOf="@+id/subscriber_count_image_view_sidebar_fragment"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<ImageView
android:id="@+id/active_user_count_image_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="@+id/guideline7"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_bolt_24" />
<TextView
android:id="@+id/active_user_count_text_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:text="@string/active_users_number_detail"
app:layout_constraintStart_toEndOf="@+id/active_user_count_image_view_sidebar_fragment"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/post_count_image_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_sidebar_fragment"
app:srcCompat="@drawable/ic_post_add_24" />
<TextView
android:id="@+id/post_count_text_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:text="@string/post_count_detail"
app:layout_constraintStart_toEndOf="@+id/post_count_image_view_sidebar_fragment"
app:layout_constraintTop_toBottomOf="@+id/subscriber_count_image_view_sidebar_fragment" />
<ImageView
android:id="@+id/comment_count_image_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="@+id/guideline7"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_sidebar_fragment"
app:srcCompat="@drawable/ic_comment_black_24" />
<TextView
android:id="@+id/comment_count_text_view_sidebar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:text="@string/comment_count_detail"
app:layout_constraintStart_toEndOf="@+id/comment_count_image_view_sidebar_fragment"
app:layout_constraintTop_toBottomOf="@+id/active_user_count_image_view_sidebar_fragment" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<View
android:id="@+id/placeholder_view_sidebar_fragment"
android:layout_width="match_parent"
android:layout_height="150dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -24,4 +24,12 @@
android:fontFamily="?attr/font_family"
android:layout_gravity="center_vertical" />
<ImageView
android:id="@+id/favorite_image_view_item_subscribed_thing"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="end|center_vertical"
android:layout_marginStart="32dp" />
</LinearLayout>

View File

@@ -7,7 +7,7 @@
<string name="community_selection_activity_label">Vybrat subreddit</string>
<string name="post_link_activity_label">Odkaz</string>
<string name="post_image_activity_label">Obrázek</string>
<string name="post_video_activity_label">Video</string>
<string name="post_video_activity_label">Příspěvek s videem</string>
<string name="rules_activity_label">Pravidla</string>
<string name="search_community_activity_label">Subreddity</string>
<string name="edit_post_activity_label">Upravit příspěvek</string>
@@ -94,15 +94,15 @@
\nŤukněte pro opakování.</string>
<string name="no_messages">Prázdné</string>
<string name="nsfw">NSFW</string>
<string name="karma_info">Karma: %1$d</string>
<string name="karma_info">Karma: %1$,d</string>
<string name="karma_info_user_detail">Karma:
\n%1$d (%2$d + %3$d)</string>
\n%1$,d (%2$d + %3$d)</string>
<string name="cakeday_info">Dortový den:
\n%1$s</string>
<string name="since">Od:</string>
<string name="profile">Profil</string>
<string name="subscriptions">Odběry</string>
<string name="multi_reddit">Multireddit</string>
<string name="multi_reddit">Multikomunita</string>
<string name="inbox">Pošta</string>
<string name="upvoted">Hlasováno pro</string>
<string name="downvoted">Hlasováno proti</string>
@@ -110,8 +110,8 @@
<string name="saved">Uložené</string>
<string name="gilded">Pozlacené</string>
<string name="settings">Nastavení</string>
<string name="subscribers_number_detail">Odběratelů: %1$d</string>
<string name="online_subscribers_number_detail">Online: %1$d</string>
<string name="subscribers_number_detail">%1$,d odběratelů</string>
<string name="online_subscribers_number_detail">Online: %1$,d</string>
<string name="cannot_fetch_community_info">Nepodařilo se získat informace o subredditu</string>
<string name="cannot_fetch_user_info">Nepodařilo se získat informace o uživateli</string>
<string name="cannot_fetch_sidebar">Nepodařilo se získat postranní menu</string>
@@ -195,14 +195,14 @@
<string name="error_loading_rules_without_retry">Chyba při načítání pravidel</string>
<string name="search_in">Hledat v</string>
<string name="all_communities">Všechny subreddity</string>
<string name="sort_best">Nejlepší</string>
<string name="sort_best">Aktivní</string>
<string name="sort_hot">Žhavé</string>
<string name="sort_new">Nové</string>
<string name="sort_random">Náhodné</string>
<string name="sort_rising">Na vzestupu</string>
<string name="sort_top">Nejčtenější</string>
<string name="sort_controversial">Sporné</string>
<string name="sort_relevance">Relevance</string>
<string name="sort_relevance">Relevantnost</string>
<string name="sort_comments">Komentáře</string>
<string name="sort_activity">Aktivita</string>
<string name="sort_confidence">Přesvědčení</string>
@@ -217,7 +217,7 @@
<string name="sort_time_all_time">Za celou dobu</string>
<string name="no_activity_found_for_share">Nemáte žádnou aplikaci, která by zvládla akci sdílení</string>
<string name="archived_post_vote_unavailable">Archivovaný příspěvek. Hlasování nedostupné.</string>
<string name="archived_post_comment_unavailable">Archivovaný příspěvek. Komentování nedostupné</string>
<string name="archived_post_comment_unavailable">Archivovaný příspěvek. Komentování nedostupné.</string>
<string name="archived_post_reply_unavailable">Archivovaný příspěvek. Odpovídání nedostupné.</string>
<string name="locked_post_comment_unavailable">Uzamčený příspěvek. Komentování nedostupné.</string>
<string name="locked_post_reply_unavailable">Uzamčený příspěvek. Odpovídání nedostupné.</string>
@@ -378,8 +378,8 @@
<string name="settings_email_summary">docilealligator.app@gmail.com</string>
<string name="settings_reddit_account_title">Reddit účet</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_title">Komunita</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Sdílet</string>
<string name="settings_share_summary">Pokud máte rádi tuto aplikaci, sdílejte ji s ostatními lidmi</string>
<string name="settings_version_title">Infinity pro Reddit</string>
@@ -701,7 +701,7 @@
\nChodí popředu.</string>
<string name="edit_multi_reddit">Upravit multireddit</string>
<string name="delete_multi_reddit">Odstranit multireddit</string>
<string name="n_awards">%1$d ocenění</string>
<string name="n_awards">%1$,d ocenění</string>
<string name="one_award">1 ocenění</string>
<string name="report">Nahlásit</string>
<string name="reporting">Nahlašování</string>
@@ -712,7 +712,7 @@
<string name="report_reason_general_copyright_issue">Obsahuje problém s autorskými právy</string>
<string name="report_reason_general_child_pornography">Obsahuje dětskou pornografii</string>
<string name="report_reason_general_abusive_content">Obsahuje zneužívající obsah</string>
<string name="subscribed_feed">Domů</string>
<string name="subscribed_feed">Odebíráno</string>
<string name="local">Populární</string>
<string name="notifications">Oznámení</string>
<string name="messages">Zprávy</string>
@@ -740,8 +740,7 @@
<string name="default_font_font_preview">Výchozí</string>
<string name="load_video_in_redgifs">Zkusit načíst video na Redgifs</string>
<string name="top_score">%1$s bodů</string>
<string name="login_activity_2fa_prompt">Pokud máte zapnuté dvoufázové ověření, zadejte prosím heslo v následujícím formátu: &lt;heslo&gt;:&lt;2FA kód&gt;.
\nPříklad: mojeheslo:123456</string>
<string name="login_activity_2fa_prompt">Pokud máte zapnuté dvoufaktorové ověřování, vyplňte pole tokenu 2FA. V opačném případě jej ponechte prázdné</string>
<string name="submit_crosspost_activity_label">Crosspost</string>
<string name="give_award_activity_label">Dát ocenění</string>
<string name="action_crosspost">Crosspost</string>
@@ -785,10 +784,7 @@
<string name="settings_bottom_app_bar_option_4">Možnost 4</string>
<string name="settings_bottom_app_bar_fab">Létající akční tlačítko</string>
<string name="settings_data_saving_mode">Režim úspory dat</string>
<string name="settings_data_saving_mode_info_summary">V režimu úspory dat:
\nNáhledové obrázky mají nižší rozlišení.
\nReddit videa mají nižší rozlišení.
\nAutomatické přehrávání videí je zakázáno.</string>
<string name="settings_data_saving_mode_info_summary">V režimu úspory dat: Náhledové obrázky mají nižší rozlišení. Videa Lemmy mají nižší rozlišení. Automatické přehrávání videí je zakázáno.</string>
<string name="settings_translation_title">Překlad</string>
<string name="settings_translation_summary">Přeložit tuto aplikaci na POEditoru. Děkujeme všem přispěvatelům.</string>
<string name="settings_credits_national_flags">Národní vlajky</string>
@@ -918,7 +914,7 @@
<string name="post_filter_usage_user">Uživatel: %1$s</string>
<string name="post_filter_usage_user_all">Uživatel</string>
<string name="post_filter_usage_multireddit">Multireddit: %1$s</string>
<string name="post_filter_usage_multireddit_all">Multireddit</string>
<string name="post_filter_usage_multireddit_all">Multikomunita</string>
<string name="post_filter_usage_search">Hledat</string>
<string name="community">Subreddit</string>
<string name="user">Uživatel</string>
@@ -1000,7 +996,7 @@
<string name="suggest_title">Navrhnout název</string>
<string name="suggest_title_failed">Nepodařilo se navrhnout název</string>
<string name="action_delete_logs">Smazat protokol</string>
<string name="inbox_with_count">Pošta (%1$d)</string>
<string name="inbox_with_count">Pošta (%1$,d)</string>
<string name="comment_continue_thread">Pokračovat ve vlákně</string>
<string name="settings_swipe_vertically_to_go_back_from_media_title">Posunout vertikálně pro návrat zpět z obrázku a GIFu</string>
<string name="settings_hide_post_flair">Skrýt štítek příspěvku</string>
@@ -1147,4 +1143,138 @@
<string name="message_change_banner_failed">Nepodařilo se změnit banner %s</string>
<string name="message_save_profile_success">Profil úspěšně uložen</string>
<string name="message_save_profile_failed">Nepodařilo se uložit profil %s</string>
<string name="action_block_user">Zablokovat uživatele</string>
<string name="action_create_github_issue">Vytvořit problém na Codebergu</string>
<string name="settings_backup_settings_summary">Heslo k souboru se zálohami je „123321“.</string>
<string name="comment_count_detail">%1$,d komentářů</string>
<string name="settings_navigation_drawer_enable_hide_karma_title">Skrýt karmu účtu</string>
<string name="voting_length">Délka hlasování: %1$d dní</string>
<string name="settings_custom_content_font_family_title">Vlastní rodina písem obsahu</string>
<string name="two_options_required">Správná anketa potřebuje alespoň dvě možnosti!</string>
<string name="no_activity_found_for_external_browser">Nenašli jsme aplikaci, která by dokázala otevřít daný odkaz</string>
<string name="settings_reddit_user_agreement_title">Smlouva s uživatelem Lemmy</string>
<string name="settings_require_authentication_to_show_accounts">Vyžadovat ověření pro zobrazení účtů</string>
<string name="settings_post_feed_max_resolution_warning_title">Pro zobrazení náhledů ve vyšším rozlišení zvyšte hodnotu. Aplikace se ale může neočekávaně ukončit.</string>
<string name="settings_easier_to_watch_in_full_screen_title">Jednodušší ke sledování na celé obrazovce</string>
<string name="settings_hide_fab_in_post_feed">Skrýt akční tlačítko v kanálu příspěvků</string>
<string name="block_user_success">Zablokován</string>
<string name="block_user_failed">Nepodařilo se zablokovat uživatele</string>
<string name="clear_user_flair">Odstranit štítek</string>
<string name="clear_user_flair_success">Uživatelský štítek odstraněn</string>
<string name="extra_small">Extra malé</string>
<string name="select_a_ttf_font">Vyberte soubor s písmem ttf</string>
<string name="unable_to_load_font">Nepodařilo se načíst vlastní písmo</string>
<string name="user_agreement_message">Před přihlášením musíte souhlasit s uživatelskou smlouvou Lemmy (%1$s) a zásadami ochrany osobních údajů Infinity pro Lemmy (%2$s).</string>
<string name="unexpected_intent_action">Neočekávaná akce intentu: <xliff:g id="action">%1$s</xliff:g></string>
<string name="storage_permission_denied">Oprávnění přístupu k úložišti bylo zamítnuto</string>
<string name="load_more_posts_failed">Nepodařilo se načíst další příspěvky.
\nKlepnutím to zkusíte znovu.</string>
<string name="denied_notification_permission">Oprávnění k oznámením nebylo uděleno</string>
<string name="reddit_api_info">Od 1. července 2023 bude rozhraní Reddit API pro klienty třetích stran, mezi něž patří i Infinity for Reddit, placené. Oznámení společnosti Reddit naleznete zde: %1$s
\n
\nAbychom přežili tuto změnu, stane se aplikace Infinity po 1. červenci aplikací pouze s předplatným. Více informací o změnách najdete v tomto příspěvku: %2$s
\n
\nJe nutné, abyste po 1. červenci aktualizovali aplikaci Infinity, abyste získali novou verzi s možností předplatného. Žádná z předchozích verzí (včetně této) nebude po 1. červenci fungovat. Ale vzhledem k napjatému časovému plánu, který Reddit poskytl, nemusí být aktualizace k dispozici hned 1. července, protože vyžaduje řádné testování. Děkujeme za pochopení!</string>
<string name="block_community_success">Komunita zablokována!</string>
<string name="block_community_failed">Nepodařilo se zablokovat komunitu</string>
<string name="unblock_community">Odblokovat komunitu</string>
<string name="unblock_community_success">Komunita odblokována!</string>
<string name="unblock_community_failed">Nepodařilo se odblokovat komunitu</string>
<string name="instance_info">Informace o instanci</string>
<string name="action_unblock_user">Odblokovat uživatele</string>
<string name="unblock_user_success">Odblokován</string>
<string name="unblock_user_failed">Nepodařilo se odblokovat uživatele</string>
<string name="report_post">Nahlásit příspěvek</string>
<string name="bottom_sheet_post_poll">Anketa</string>
<string name="post_poll_activity_label">Příspěvek s anketou</string>
<string name="history_activity_label">Historie</string>
<string name="action_open_external_browser">Otevřít v prohlížeči</string>
<string name="action_more_options">Další možnosti</string>
<string name="anonymous_homepage_not_implemented">Anonymní domovská stránka zatím není implementována</string>
<string name="history">Historie</string>
<string name="block_user">Zablokovat uživatele</string>
<string name="settings_show_display_name_instead_of_user_name">Skrýt zobrazovaná jména komunity a uživatelů</string>
<string name="settings_hide_community_and_user_instance">Skrýt instanci komunity a uživatelů</string>
<string name="active_users_number_detail">%1$,d aktivních uživatelů</string>
<string name="post_count_detail">%1$,d příspěvků</string>
<string name="invalid_response">Neplatná odpověď ze serveru</string>
<string name="invalid_username_or_password">Neplatné uživatelské jméno nebo heslo</string>
<string name="settings_custom_font_family_title">Vlastní rodina písem</string>
<string name="settings_custom_title_font_family_title">Vlastní rodina písem nadpisů</string>
<string name="settings_fixed_height_preview_in_card_title">Pevná výška v kartě</string>
<string name="settings_hide_text_post_content">Skrýt obsah textových příspěvků</string>
<string name="settings_hide_comment_awards_title">Skrýt ocenění komentářů</string>
<string name="settings_show_fewer_toolbar_options_threshold_title">Zobrazit méně možností nástrojové lišty počínaje</string>
<string name="settings_show_fewer_toolbar_options_threshold_summary">Úroveň %1$d</string>
<string name="settings_show_author_avatar_title">Zobrazit avatar autora</string>
<string name="settings_always_show_child_comment_count_title">Vždy zobrazit počet podřazených komentářů</string>
<string name="settings_hide_upvote_ratio_title">Skrýt poměr hlasů</string>
<string name="settings_miscellaneous_dangerous_group_title">Nebezpečné</string>
<string name="settings_post_feed_max_resolution_title">Maximální rozlišení náhledu příspěvků v kanálu (šířka * výška)</string>
<string name="settings_reddit_video_default_resolution">Výchozí rozlišení videí Lemmy</string>
<string name="settings_comment_divider_type">Typ oddělovače komentářů</string>
<string name="edited">Upraveno</string>
<string name="edited_time">Upraveno %s</string>
<string name="unable_to_get_font_file">Nepodařilo se načíst vaše písmo</string>
<string name="unable_to_copy_font_file">Nepodařilo se zkopírovat vaše písmo</string>
<string name="reddit_gallery_item_caption_hint">Popisek (max. 180 znaků)</string>
<string name="reddit_gallery_item_url_hint">URL</string>
<string name="user_agreement_dialog_title">Uživatelská smlouva</string>
<string name="agree">Souhlasím</string>
<string name="do_not_agree">Nesouhlasím</string>
<string name="option_1_hint">Možnost 1 (vyžadována)</string>
<string name="option_2_hint">Možnost 2 (vyžadována)</string>
<string name="option_3_hint">Možnost 3</string>
<string name="option_4_hint">Možnost 4</string>
<string name="option_5_hint">Možnost 5</string>
<string name="option_6_hint">Možnost 6</string>
<string name="not_a_valid_number">Není platné číslo</string>
<string name="post_karma">Karma příspěvků:</string>
<string name="comment_karma">Karma komentářů:</string>
<string name="awarder_karma">Karma oceňovatele:</string>
<string name="awardee_karma">Karma z ocenění:</string>
<string name="handle_link">Zpracovat odkaz</string>
<string name="invalid_link">Neplatný odkaz</string>
<string name="enable_random_adaptation">Povolit náhodnou adaptaci</string>
<string name="error_unsupported_video">Médium zahrnuje stopy videa, žádné ale nelze na tomto zařízení přehrát</string>
<string name="error_unsupported_audio">Médium zahrnuje stopy zvuku, žádné ale nelze na tomto zařízení přehrát</string>
<string name="sample_list_load_error">Nepodařilo se načíst jeden nebo více vzorových seznamů</string>
<string name="exo_controls_volume_up_description">Zvýšení hlasitosti</string>
<string name="exo_controls_volume_off_description">Vypnutí hlasitosti</string>
<string name="invalid_regex">Neplatný vzor regex</string>
<string name="no_more_posts">Žádné další příspěvky</string>
<string name="image_index_in_gallery">%1$d/%2$d</string>
<string name="go_to_settings">Nastavení</string>
<string name="reddit_api_info_title">Důležité upozornění ohledně změn v API Redditu</string>
<string name="i_understand">Chápu</string>
<string name="instance_url">URL instance</string>
<string name="instance_url_hint">Adresa URL vaší preferované instance Lemmy s nebo bez předpony https://</string>
<string name="user_username">Uživatelské jméno</string>
<string name="user_password">Heslo</string>
<string name="user_2fa_token">Token 2FA (pokud je potřeba)</string>
<string name="user_login">Přihlásit se</string>
<string name="sort_time_6hours">6 hodin</string>
<string name="sort_time_12hours">12 hodin</string>
<string name="sort_time_3months">3 měsíce</string>
<string name="sort_time_6months">6 měsíců</string>
<string name="sort_time_9months">9 měsíců</string>
<string name="anonymous_account_instance">Instance s anonymním účtem</string>
<string name="url_cannot_be_null_or_empty">Adresa URL nesmí být nulová nebo prázdná</string>
<string name="could_not_resolve_link">Nepodařilo se rozpoznat URL :(</string>
<string name="mark_post_as_read_failed">Nepodařilo se označit příspěvky jako přečtené</string>
<string name="upload_image">Nahrát obrázek</string>
<string name="mentions">Zmínky</string>
<string name="replies">Odpovědi</string>
<string name="use_circular_fab">Použít kulaté akční tlačítko</string>
<string name="block_community">Zablokovat komunitu
\n</string>
<string name="not_implemented">Funkce zatím nebyla implementována :(</string>
<string name="instance_cannot_be_empty">Pole instance nesmí být prázdné.</string>
<string name="username_cannot_be_empty">Pole uživatelského jména nesmí být prázdné.</string>
<string name="password_cannot_be_empty">Pole hesla nesmí být prázdné.</string>
<string name="separate_down_and_up_votes">Oddělit hlasy pro a proti</string>
<string name="blocked_communities">Zablokované komunity</string>
<string name="blocked_users">Zablokovaní uživatelé</string>
<string name="blocks">Blokování</string>
<string name="send_report">Odeslat hlášení</string>
</resources>

View File

@@ -111,7 +111,7 @@
<string name="saved">Gespeichert</string>
<string name="gilded">Vergoldet</string>
<string name="settings">Einstellungen</string>
<string name="subscribers_number_detail">Abonnenten: %1$d</string>
<string name="subscribers_number_detail">%1$,d Abonnenten</string>
<string name="online_subscribers_number_detail">Online: %1$d</string>
<string name="cannot_fetch_community_info">Kann Subredddit-Info nicht abrufen</string>
<string name="cannot_fetch_user_info">Kann Benutzer-Info nicht abrufen</string>
@@ -394,7 +394,7 @@
<string name="settings_reddit_account_title">Lemmy-Konto</string>
<string name="settings_reddit_account_summary">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Teilen</string>
<string name="settings_share_summary">Teile diese App mit anderen Leuten, wenn sie dir gefällt</string>
<string name="settings_version_title">Infinity For Reddit</string>
@@ -715,7 +715,7 @@
<!-- Fuzzy -->
<string name="reset_all_settings_success">Alle Einstellungen erfolgreich gelöscht</string>
<string name="username_preview">u/Hostilenemy</string>
<string name="community_preview">!infinityforlemmy@lemdro.id</string>
<string name="community_preview">!eternityapp@lemdro.id</string>
<string name="primary_text_preview">Primärer Text</string>
<string name="secondary_text_preview">Sekundärer Text</string>
<string name="post_title_preview">Dies ist ein Beitrag</string>
@@ -1244,4 +1244,65 @@
<string name="history">Verlauf</string>
<string name="invalid_username_or_password">Falscher Nutzername/Passwort</string>
<string name="action_block_user">Nutzer blockieren</string>
<string name="active_users_number_detail">%1$,d Aktive Nutzer</string>
<string name="settings_backup_settings_summary">Das Password für die Backup-Datei ist \"123321\".</string>
<string name="settings_navigation_drawer_enable_hide_karma_title">Verstecke Account Karma</string>
<string name="block_user">Nutzer Blockieren</string>
<string name="clear_user_flair">Flair Löschen</string>
<string name="clear_user_flair_success">Nutzer-Flair gelöscht</string>
<string name="extra_small">Extra Klein</string>
<string name="invalid_link">Ungültiger Link</string>
<string name="error_unsupported_video">Media enthält Videospuren, aber keine davon sind mit diesem Gerät abspielbar</string>
<string name="exo_controls_volume_up_description">Lautstärke erhöhen</string>
<string name="exo_controls_volume_off_description">Lautstärke Aus</string>
<string name="url_cannot_be_null_or_empty">Die URL darf nicht leer oder ungültig sein</string>
<string name="block_community_success">Community blockiert!</string>
<string name="block_community_failed">Community konnte nicht blockiert werden</string>
<string name="unblock_community">Community entsperren</string>
<string name="unblock_community_failed">Community konnte nicht ensperrt werden</string>
<string name="instance_info">Infos zur Instanz</string>
<string name="blocked_communities">Blockierte Communities</string>
<string name="blocked_users">Blockierte Benutzer</string>
<string name="action_unblock_user">Benutzer Freigeben</string>
<string name="post_count_detail">%1$,d Posts</string>
<string name="comment_count_detail">%1$,d Kommentare</string>
<string name="invalid_regex">Ungültiges regex-Muster</string>
<string name="load_more_posts_failed">Weitere Beiträge konnten nicht geladen werden.
\nTippen, um es erneut zu versuchen.</string>
<string name="no_more_posts">Keine weiteren Posts</string>
<string name="image_index_in_gallery">%1$d/%2$d</string>
<string name="user_password">Passwort</string>
<string name="user_2fa_token">2FA Token (wenn benötigt)</string>
<string name="user_login">Login</string>
<string name="sort_time_6hours">6 Stunden</string>
<string name="sort_time_12hours">12 Stunden</string>
<string name="sort_time_3months">3 Monate</string>
<string name="sort_time_6months">6 Monate</string>
<string name="sort_time_9months">9 Monate</string>
<string name="could_not_resolve_link">URL konnte nicht aufgelöst werden :(</string>
<string name="mark_post_as_read_failed">Post konnte nicht als gelesen markiert werden</string>
<string name="upload_image">Bild hochladen</string>
<string name="mentions">Erwähnungen</string>
<string name="replies">Antworten</string>
<string name="block_community">Community Blockieren
\n</string>
<string name="not_implemented">Feature noch nicht implementiert :(</string>
<string name="instance_cannot_be_empty">Das Feld Instanz kann nicht leer gelassen werden.</string>
<string name="username_cannot_be_empty">Das Feld Benutzername kann nicht leer gelassen werden.</string>
<string name="password_cannot_be_empty">Das Feld Password kann nicht leer gelassen werden.</string>
<string name="separate_down_and_up_votes">Trenne Up- und Downvotes</string>
<string name="unblock_community_success">Community entsperrt!</string>
<string name="denied_notification_permission">Berechtigung für Benachrichtigungen wurde nicht erteilt</string>
<string name="go_to_settings">Einstellungen</string>
<string name="reddit_api_info_title">Wichtiger Hinweis zu den Reddit API-Änderungen</string>
<string name="instance_url">Instanz URL</string>
<string name="user_username">Benutzername</string>
<string name="settings_easier_to_watch_in_full_screen_title">Leichtere Wiedergabe im Vollbildmodus</string>
<string name="block_user_success">Blockiert</string>
<string name="block_user_failed">Nutzer konnte nicht blockiert werden</string>
<string name="edited">Bearbeitet</string>
<string name="edited_time">Bearbeitet am %s</string>
<string name="enable_random_adaptation">Zufallsanpassung einschalten</string>
<string name="error_unsupported_audio">Media enthält Audiospuren, aber keine davon sind mit diesem Gerät abspielbar</string>
<string name="storage_permission_denied">Die Berechtigung auf den Speicher wurde verweigert</string>
</resources>

View File

@@ -390,7 +390,7 @@ Premio means prize, so it's better suited the first word instead of the second o
<string name="settings_reddit_account_title">Cuenta de Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Subreddit</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Compartir</string>
<string name="settings_share_summary">Si te gusta esta aplicación ¡Compártela!</string>
<string name="settings_version_title">Infinity for Reddit</string>

View File

@@ -405,7 +405,7 @@
<string name="settings_reddit_account_title">Compte Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Communauté</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Partager</string>
<string name="settings_share_summary">Partagez cette application avec d\'autres si vous l\'appréciez</string>
<string name="settings_version_title">Infinity pour Reddit</string>
@@ -832,7 +832,7 @@ https://s3.eu-west-1.amazonaws.com/po-pub/i/dFZKKms9HbrDGOlcgW9QTcwF.jpg -->
<!-- Fuzzy -->
<string name="settings_data_saving_mode_info_summary">Dans le mode économie de données, les aperçus d\'image et les vidéos sont en plus petite résolution.</string>
<string name="settings_translation_title">Traduction</string>
<string name="settings_translation_summary">Application Infinity for Reddit traduite dans POEditor ; application Infinity for Lemmy traduite sur Weblate. Merci à tou·tes les contributeur·ices.</string>
<string name="settings_translation_summary">Application Infinity for Reddit traduite dans POEditor ; application Eternity traduite sur Weblate. Merci à tou·tes les contributeur·ices.</string>
<string name="settings_credits_national_flags">Drapeaux nationaux</string>
<string name="settings_credits_national_flags_summary">Icône réalisée par Freepik de www.flaticon.com</string>
<string name="copy_failed">Échec de la copie</string>

View File

@@ -403,7 +403,7 @@ Behavior -->
<string name="settings_reddit_account_title">"रैडिट खाता "</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">"सबरैडिट "</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">"साझा करें "</string>
<string name="settings_share_summary">"यदि आप इसका आनंद लेते हैं तो एप्प को अन्य लोगों के साथ साझा करें "</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -384,7 +384,7 @@
<string name="settings_reddit_account_title">Reddit račun</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Podreddit</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Dijeljenje</string>
<string name="settings_share_summary">Ako Vam se aplikacija sviđa, podijelite ju s drugima</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -377,7 +377,7 @@
<string name="settings_reddit_account_title">Reddit fiók</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Közösség</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Megosztás</string>
<string name="settings_share_summary">Ha tetszik az app oszd meg másokkal is</string>
<string name="settings_version_title">Infiniti Reddithez</string>
@@ -688,7 +688,7 @@
<string name="delete_all_front_page_scrolled_positions_success">A Kezdőlap összes görgetési pozíciójának törlése sikeres</string>
<string name="reset_all_settings_success">Összes beállítás visszaállítása sikeres</string>
<string name="username_preview">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="community_preview">!infinityforlemmy@lemdro.id</string>
<string name="community_preview">!eternityapp@lemdro.id</string>
<string name="primary_text_preview">Elsődleges szöveg</string>
<string name="secondary_text_preview">Másodlagos szöveg</string>
<string name="post_title_preview">Ez egy poszt</string>

View File

@@ -373,7 +373,7 @@
<string name="settings_reddit_account_title">Account Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Condividi</string>
<string name="settings_share_summary">Condividi questa app con altre persone se la apprezzi</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -406,7 +406,7 @@
<string name="settings_reddit_account_title">Redditアカウント</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">共有</string>
<string name="settings_share_summary">このアプリが気に入ったようでしたら、ぜひ他の方々にもご紹介ください</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -379,7 +379,7 @@
<string name="settings_reddit_account_title">Reddit-account</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Delen</string>
<string name="settings_share_summary">Deel deze app met anderen als je hem graag gebruikt</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -374,7 +374,7 @@
<string name="settings_reddit_account_title">Konto Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Udostępnij</string>
<string name="settings_share_summary">Udostępnij tą aplikację, jeśli ci się ona podoba</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -380,7 +380,7 @@
<string name="settings_reddit_account_title">Conta Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Compartilhar</string>
<string name="settings_share_summary">Compartilhe esse App com outros se você está gostando dele</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -382,10 +382,10 @@
<string name="settings_reddit_account_title">Conta do Lemmy</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Comunidade</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Partilhar</string>
<string name="settings_share_summary">Se aprecia esta aplicação, partilhe-a com outros</string>
<string name="settings_version_title">Infinity For Lemmy</string>
<string name="settings_version_title">Eternity</string>
<string name="settings_version_summary">Versão %s</string>
<string name="settings_category_customization_title">Personalização</string>
<string name="settings_customize_light_theme_title">Tema Claro</string>
@@ -448,7 +448,7 @@
<string name="error_getting_multi_reddit_data">Erro ao obter dados da multi-comunidade</string>
<string name="error_loading_multi_reddit_list">Não foi possível sincronizar multi-comunidades</string>
<string name="error_loading_subscriptions">Não foi possível sincronizar as subscrições</string>
<string name="share_this_app">Veja o Infinity for Lemmy, um cliente fantástico do Lemmy!
<string name="share_this_app">Veja o Eternity, um cliente fantástico do Lemmy!
\nhttps://play.google.com/store/apps/details\?id=eu.toldi.infinityforlemmy</string>
<string name="error_getting_community_name">Erro ao obter o nome da comunidade</string>
<string name="share_post_link">Partilhar Endereço da Publicação</string>
@@ -514,7 +514,7 @@
<string name="theme_item_button_text_color">Cor Texto do Botão</string>
<string name="theme_item_button_text_color_detail">Aplicado a: Texto do Botão</string>
<string name="theme_item_chip_text_color">Cor do Texto Chip</string>
<string name="theme_item_chip_text_color_detail">Aplicado a: Botão Aderir</string>
<string name="theme_item_chip_text_color_detail">Aplicado a: Botão Subscrever</string>
<string name="theme_item_link_color">Cor da Ligação</string>
<string name="theme_item_link_color_detail">Aplicado ao: URL</string>
<string name="theme_item_received_message_text_color">Cor do Texto de Mensagem Recebida</string>
@@ -588,9 +588,9 @@
<string name="theme_item_stickied_post_icon_tint">Cor do Ícone de Publicação Afixada</string>
<string name="theme_item_stickied_post_icon_tint_detail">Aplicado a: Ícone de Publicação Afixada</string>
<string name="theme_item_subscribed_color">Membro</string>
<string name="theme_item_subscribed_color_detail">Aplicado a: Botão cancelar adesão</string>
<string name="theme_item_unsubscribed_color">Cancelar Adesão</string>
<string name="theme_item_unsubscribed_color_detail">Aplicado a: Botão aderir</string>
<string name="theme_item_subscribed_color_detail">Aplicado a: Botão cancelar subscrição</string>
<string name="theme_item_unsubscribed_color">Cancelar Subscrição</string>
<string name="theme_item_unsubscribed_color_detail">Aplicado a: Botão Subscrever</string>
<string name="theme_item_username_color">Cor do Nome de Utilizador</string>
<string name="theme_item_username_color_detail">Aplicado a: Nome de Utilizador</string>
<string name="theme_item_community_color">Cor das Comunidades</string>
@@ -704,7 +704,7 @@
<string name="report_reason_general_copyright_issue">Contém Problemas de Direitos de Autor</string>
<string name="report_reason_general_child_pornography">Contém Pornografia Infantil</string>
<string name="report_reason_general_abusive_content">Contém Conteúdo Abusivo</string>
<string name="subscribed_feed">Início</string>
<string name="subscribed_feed">Subscrito</string>
<string name="local">Local</string>
<string name="notifications">Notificações</string>
<string name="messages">Mensagens</string>

View File

@@ -390,7 +390,7 @@
<string name="settings_reddit_account_title">Cont Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Distribuie</string>
<string name="settings_share_summary">Distribuie această aplicație altor persoane dacă îți place</string>
<string name="settings_version_title">Infinit Pentru Reddit</string>

View File

@@ -384,7 +384,7 @@
<string name="settings_reddit_account_title">Аккаунт Lemmy</string>
<string name="settings_reddit_account_summary">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="settings_community_title">Сообщество</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Поделиться</string>
<string name="settings_share_summary">Поделитесь этим приложением с другими людьми, если оно вам нравится</string>
<string name="settings_version_title">Infinity для Lemmy</string>
@@ -694,7 +694,7 @@
<string name="delete_all_front_page_scrolled_positions_success">Все позиции прокрутки главной страницы в базе данных успешно удалены</string>
<string name="reset_all_settings_success">Все настройки успешно сброшены</string>
<string name="username_preview">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="community_preview">!infinityforlemmy@lemdro.id</string>
<string name="community_preview">!eternityapp@lemdro.id</string>
<string name="primary_text_preview">Основной текст</string>
<string name="secondary_text_preview">Дополнительный текст</string>
<string name="post_title_preview">Это пост</string>

View File

@@ -388,7 +388,7 @@ This translation does it work well in this kinda format. People use "since" in s
<string name="settings_reddit_account_title">Reddit Hesabı</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Subreddit</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Paylaş</string>
<string name="settings_share_summary">Bu uygulamayı beğendiyseniz başkalarıyla paylaşın</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -4,25 +4,25 @@
<string name="comment_activity_label">Надіслати коментар</string>
<string name="comment_activity_label_is_replying">Відповісти</string>
<string name="post_text_activity_label">Текстовий допис</string>
<string name="community_selection_activity_label">Виберіть сабредит</string>
<string name="community_selection_activity_label">Виберіть спільноту</string>
<string name="post_link_activity_label">Допис ланки</string>
<string name="post_image_activity_label">Зображення</string>
<string name="post_video_activity_label">Відеозапис</string>
<string name="rules_activity_label">Правила</string>
<string name="search_community_activity_label">Сабредити</string>
<string name="search_community_activity_label">Спільноти</string>
<string name="edit_post_activity_label">Змінити допис</string>
<string name="edit_comment_activity_label">Змінити коментар</string>
<string name="view_message_activity_label">Вхідні</string>
<string name="settings_activity_label">Налаштування</string>
<string name="account_saved_thing_activity_label">Збережене</string>
<string name="create_multi_reddit_activity_label">Створити мультиредит</string>
<string name="community_multiselection_activity_label">Вибрати сабредити</string>
<string name="create_multi_reddit_activity_label">Створити мультиспільноту</string>
<string name="community_multiselection_activity_label">Вибрати спільноти</string>
<string name="custom_theme_listing_activity_label">Власні теми</string>
<string name="customize_theme_activity_label">Пристосувати тему</string>
<string name="customize_theme_activity_create_theme_label">Створити тему</string>
<string name="theme_preview_activity_label">Перегляд теми</string>
<string name="edit_multi_reddit_activity_label">Змінити мультиредит</string>
<string name="selected_subeddits_activity_label">Вибрані сабредити</string>
<string name="edit_multi_reddit_activity_label">Змінити мультиспільноту</string>
<string name="selected_subeddits_activity_label">Вибрані спільноти</string>
<string name="report_activity_label">Повідомити</string>
<string name="view_imgur_media_activity_image_label">Зображення %1$d/%2$d</string>
<string name="view_imgur_media_activity_video_label">Відеозапис %1$d/%2$d</string>
@@ -53,8 +53,8 @@
<string name="action_edit_flair">Змінити личку</string>
<string name="action_change_post_layout">Змінити вигляд дописів</string>
<string name="action_save">Зберегти</string>
<string name="action_edit_multi_reddit">Змінити мультиредит</string>
<string name="action_delete_multi_reddit">Видалити мультиредит</string>
<string name="action_edit_multi_reddit">Змінити мультиспільноту</string>
<string name="action_delete_multi_reddit">Видалити мультиспільноту</string>
<string name="action_share">Поширити</string>
<string name="action_preview">Перегляд</string>
<string name="action_report">Повідомити</string>
@@ -73,15 +73,15 @@
<string name="load_more_posts_error">Помилка завантаження дописів.</string>
<string name="load_post_error">Помилка завантаження цього допису.
\nНатисніть, щоб повторити.</string>
<string name="search_communities_error">Помилка пошуку сабредитів.
<string name="search_communities_error">Помилка пошуку спільнот.
\nНатисніть, щоб повторити.</string>
<string name="search_users_error">Помилка пошуку користувачів.
\nНатисніть, щоб повторити.</string>
<string name="no_posts">Не знайдено дописів</string>
<string name="no_comments">Не знайдено коментарів</string>
<string name="no_communities">Не знайдено сабредитів</string>
<string name="no_communities">Не знайдено спільнот</string>
<string name="no_users">Не знайдено користувачів</string>
<string name="no_multi_reddits">Не знайдено мультиредитів</string>
<string name="no_multi_reddits">Не знайдено мультиспільнот</string>
<string name="no_storage_permission">Нема дозволу для збереження цього файлу</string>
<string name="load_comments_failed">Помилка завантаження коментарів.
\nНатисніть, щоб повторити.</string>
@@ -94,28 +94,28 @@
\nНатисніть, щоб повторити.</string>
<string name="no_messages">Порожньо</string>
<string name="nsfw">НБДР</string>
<string name="karma_info">Карма: %1$d</string>
<string name="karma_info">Карма: %1$,d</string>
<string name="karma_info_user_detail">Карма:
\n%1$d (%2$d + %3$d)</string>
\n%1$,d (%2$d + %3$d)</string>
<string name="cakeday_info">День торта:
\n%1$s</string>
<string name="since">Від:</string>
<string name="profile">Профіль</string>
<string name="subscriptions">Підписки</string>
<string name="multi_reddit">Мультиредит</string>
<string name="multi_reddit">Мультиспільнота</string>
<string name="inbox">Вхідні</string>
<string name="upvoted">Голоси вверх</string>
<string name="upvoted">Голоси вгору</string>
<string name="downvoted">Голоси вниз</string>
<string name="hidden">Приховане</string>
<string name="saved">Збережені</string>
<string name="gilded">Позолочене</string>
<string name="settings">Налаштування</string>
<string name="subscribers_number_detail">Підписників: %1$d</string>
<string name="online_subscribers_number_detail">У мережі: %1$d</string>
<string name="cannot_fetch_community_info">Не вдалося отримати інформацію про сабредит</string>
<string name="subscribers_number_detail">%1$,d підписників</string>
<string name="online_subscribers_number_detail">У мережі: %1$,d</string>
<string name="cannot_fetch_community_info">Не вдалося отримати інформацію про спільноту</string>
<string name="cannot_fetch_user_info">Не вдалося отримати інформацію про користувача</string>
<string name="cannot_fetch_sidebar">Не вдалося отримати бічну панель</string>
<string name="cannot_fetch_multireddit">Не вдалося отримати інформацію про мультиредит</string>
<string name="cannot_fetch_multireddit">Не вдалося отримати інформацію про мультиспільноту</string>
<string name="subscribe">Підписатися</string>
<string name="unsubscribe">Відписатися</string>
<string name="subscribed">Підписано</string>
@@ -128,7 +128,7 @@
<string name="follow_failed">Не вдалося стежити</string>
<string name="unfollowed">Не відстежується</string>
<string name="unfollow_failed">Не вдалося не відстежувати</string>
<string name="content_description_banner_imageview">Зображення банера сабредиту</string>
<string name="content_description_banner_imageview">Зображення банера спільноти</string>
<string name="app_label">Infinity</string>
<string name="search_hint">Шукати все</string>
<string name="no_posts_no_lazy_mode">Нема доступних дописів</string>
@@ -150,10 +150,10 @@
<string name="sending_message">Надсилання</string>
<string name="send_message_success">Повідомлення надіслано</string>
<string name="send_message_failed">Не вдалося надіслати це повідомлення</string>
<string name="select_a_community">Оберіть спочатку сабредит</string>
<string name="select_a_community">Спочатку оберіть спільноту</string>
<string name="title_required">Допису треба дати хороший заголовок</string>
<string name="link_required">Чуєш, де посилання\?</string>
<string name="select_an_image">Оберіть спочатку зображення</string>
<string name="select_an_image">Спочатку оберіть зображення</string>
<string name="posting">Публікування</string>
<string name="post_failed">Не вдалося це опублікувати</string>
<string name="error_processing_image">Помилка обробки зображення</string>
@@ -164,12 +164,12 @@
<string name="loading">Завантаження</string>
<string name="post_title_hint">Заголовок</string>
<string name="post_text_content_hint">Вміст</string>
<string name="choose_a_communities">Обрати сабредит</string>
<string name="choose_a_communities">Обрати спільноту</string>
<string name="rules">Правила</string>
<string name="post_link_hint">URL</string>
<string name="communities">Сабредити</string>
<string name="communities">Спільноти</string>
<string name="users">Користувачі</string>
<string name="multi_reddits">Мультиредити</string>
<string name="multi_reddits">Мультиспільноти</string>
<string name="bottom_sheet_post_text">Текст</string>
<string name="bottom_sheet_post_link">Ланка</string>
<string name="bottom_sheet_post_image">Зображення</string>
@@ -193,7 +193,7 @@
\nНатисніть, щоб повторити.</string>
<string name="error_loading_rules_without_retry">Помилка завантаження правил</string>
<string name="search_in">Шукати в</string>
<string name="all_communities">Усіх сабредитах</string>
<string name="all_communities">Усі спільноти</string>
<string name="sort_best">Краще</string>
<string name="sort_hot">Свіже</string>
<string name="sort_new">Нове</string>
@@ -243,18 +243,18 @@
<string name="post_hide_success">Допис приховано</string>
<string name="post_hide_failed">Не вдалося сховати допис</string>
<string name="post_unhide_success">Допис не приховано</string>
<string name="thing_favorite_failed">Не вдалося додати до вибраних</string>
<string name="thing_unfavorite_failed">Не вдалося видалити з вибраних</string>
<string name="post_unhide_failed">Не вдалося ховати допис</string>
<string name="thing_favorite_failed">Не вдалося додати до вибраного</string>
<string name="thing_unfavorite_failed">Не вдалося видалити з вибраного</string>
<string name="post_unhide_failed">Не вдалося показати допис</string>
<string name="delete_this_post">Видалити цей допис</string>
<string name="delete_this_comment">Видалити цей коментар</string>
<string name="are_you_sure">Ви впевнені\?</string>
<string name="edit">Змінити</string>
<string name="delete">Видалити</string>
<string name="see_removed_comment">Показати вилучений коментар</string>
<string name="fetching_removed_comment">Отримати вилучений коментар</string>
<string name="fetching_removed_comment">Отримання вилученого коментаря</string>
<string name="show_removed_comment_failed">Не вдалося знайти вилучений коментар</string>
<string name="fetching_removed_post">Отримати вилучений допис</string>
<string name="fetching_removed_post">Отримання вилученого допису</string>
<string name="show_removed_post_failed">Не вдалося знайти вилучений допис</string>
<string name="cancel">Скасувати</string>
<string name="ok">Гаразд</string>
@@ -273,10 +273,10 @@
<string name="update_flair_failed">Не вдалося оновити личку</string>
<string name="edit_flair">Змінити личку</string>
<string name="only_allow_64_chars">Дозволено лише не більше 64 знаків</string>
<string name="view_all_comments">Клацніть тут, щоб передивитися всі коментарі</string>
<string name="view_all_comments">Клацніть тут, щоб переглянути всі коментарі</string>
<string name="notification_summary_account">Обліківка</string>
<string name="notification_summary_message">Нове повідомлення</string>
<string name="notification_summary_community">Сабредит</string>
<string name="notification_summary_community">Спільнота</string>
<string name="notification_summary_award">Нагорода</string>
<string name="notification_new_messages">%1$d нових повідомлень</string>
<string name="label_account">Обліківка</string>
@@ -291,7 +291,7 @@
<string name="settings_interface_title">Інтерфейс</string>
<string name="settings_gestures_and_buttons_title">Жести і кнопки</string>
<string name="settings_save_front_page_scrolled_position_title">Зберігати позицію гортання в ДОМІВЦІ</string>
<string name="settings_save_front_page_scrolled_position_summary">Оглядати нові дописи після оновлення ДОМІВКИ (Перша сторінка, тип сортування: Кращі)</string>
<string name="settings_save_front_page_scrolled_position_summary">Оглядати нові дописи після оновлення ДОМІВКИ (Перша сторінка, тип сортування: Найкращі)</string>
<string name="settigns_video_title">Відео</string>
<string name="settings_video_autoplay_title">Самовідтворення відео</string>
<string name="settings_mute_autoplaying_videos_title">Глушити самовідтворювані відео</string>
@@ -313,7 +313,7 @@
<string name="settings_mute_video_title">Глушити відео</string>
<string name="settings_mute_nsfw_video_title">Глушити відео НБДР</string>
<string name="settings_automatically_try_redgifs_title">Автоматично спробувати отримати доступ до Redgifs, якщо відео на Gfycat видалено.</string>
<string name="settings_video_player_ignore_nav_bar_title">Ігнорувати панель пересування у відео-програвачі</string>
<string name="settings_video_player_ignore_nav_bar_title">Ігнорувати панель пересування у відеопрогравачі</string>
<string name="settings_video_player_ignore_nav_bar_summary">Не дозволяти відеоконтролеру мати додаткове поле</string>
<string name="settings_confirm_to_exit">Підтверджувати вихід</string>
<string name="settings_category_comment_title">Коментар</string>
@@ -334,7 +334,7 @@
<string name="settings_swipe_to_go_back_summary">Не застосовується до всіх сторінок</string>
<string name="settings_lock_jump_to_next_top_level_comment_button_title">Блокувати стрибок до наступної кнопки коментаря верхнього рівня</string>
<string name="settings_lock_bottom_app_bar_title">Замкнути нижню панель пересування</string>
<string name="settings_swipe_up_to_hide_jump_to_next_top_level_comment_button_title">Ковзніть уверх, щоб приховати стрибок до наступної кнопки коментаря верхнього рівня</string>
<string name="settings_swipe_up_to_hide_jump_to_next_top_level_comment_button_title">Ковзніть угору, щоб приховати стрибок до наступної кнопки коментаря верхнього рівня</string>
<string name="settings_lazy_mode_interval_title">Крок лінивого режиму</string>
<string name="settings_font_title">Шрифт</string>
<string name="settings_preview_font_title">Перегляд шрифтів</string>
@@ -352,7 +352,7 @@
<string name="settings_blur_spoiler_title">Розмивати зображення спойлерів</string>
<string name="settings_about_master_title">Про застосунок</string>
<string name="settings_acknowledgement_master_title">Вдячність</string>
<string name="settings_credits_master_title">Кредит довіри</string>
<string name="settings_credits_master_title">Подяка</string>
<string name="settings_credits_icon_foreground_title">Значок переднього фону</string>
<string name="settings_credits_icon_foreground_summary">Векторна технологія створена freepik - www.freepik.com</string>
<string name="settings_credits_icon_background_title">Значок заднього фону</string>
@@ -369,18 +369,18 @@
<string name="settings_credits_best_rocket_icon_summary">Автор значка Freepik із www.flaticon.com</string>
<string name="settings_credits_material_icons_title">Значки Material</string>
<string name="settings_open_source_title">Відкритий код</string>
<string name="settings_open_source_summary">Покладіть зірочку на Github, якщо Вам подобається цей застосунок</string>
<string name="settings_open_source_summary">Натисніть зірочку на Codeberg, якщо Вам подобається цей застосунок</string>
<string name="settings_rate_title">Оцініть на Google Play</string>
<string name="settings_rate_summary">Дай мені 5 зірочок і я буду щаслива</string>
<string name="settings_email_title">Ел. пошта</string>
<string name="settings_email_summary">docilealligator.app@gmail.com</string>
<string name="settings_reddit_account_title">Обліківка Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Сабредит</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_email_title">Mastodon</string>
<string name="settings_email_summary">\@bazsalanszky@fosstodon.org</string>
<string name="settings_reddit_account_title">Обліківка Lemmy</string>
<string name="settings_reddit_account_summary">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="settings_community_title">Спільнота</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Поширте</string>
<string name="settings_share_summary">Поділіться цим застосунком з іншими людьми, якщо він Вам подобається</string>
<string name="settings_version_title">Infinity For Reddit</string>
<string name="settings_version_title">Eternity</string>
<string name="settings_version_summary">Версія %s</string>
<string name="settings_category_customization_title">Пристосування</string>
<string name="settings_customize_light_theme_title">Світла тема</string>
@@ -388,7 +388,7 @@
<string name="settings_customize_amoled_theme_title">Тема Amoled</string>
<string name="settings_manage_themes_title">Керувати темами</string>
<string name="settings_advanced_master_title">Розширені</string>
<string name="settings_delete_all_communities_data_in_database_title">Видалити всі сабредити з бази даних</string>
<string name="settings_delete_all_communities_data_in_database_title">Видалити всі спільноти з бази даних</string>
<string name="settings_delete_all_users_data_in_database_title">Видалити всіх користувачів із бази даних</string>
<string name="settings_delete_all_sort_type_data_in_database_title">Видалити всі типи сортування з бази даних</string>
<string name="settings_delete_all_post_layout_data_in_database_title">Видалити всі вигляди дописів із бази даних</string>
@@ -400,15 +400,15 @@
<string name="settings_tab_3_summary">Вкладка 3</string>
<string name="settings_tab_title">Назва</string>
<string name="settings_tab_post_type">Тип</string>
<string name="settings_tab_community_name">Назва сабредиту (без префіксу r/)</string>
<string name="settings_tab_multi_reddit_name">Шлях мультиредиту (/user/yourusername/m/yourmultiredditname)</string>
<string name="settings_tab_username">Імʼя користувача (без префіксу u/)</string>
<string name="settings_tab_community_name">Назва спільноти (без частини «@сервер»)</string>
<string name="settings_tab_multi_reddit_name">Шлях мультиспільноти (/user/yourusername/m/yourmulticommunityname) (лише маленькі літери)</string>
<string name="settings_tab_username">Ім\'я користувача (без префікса u/)</string>
<string name="no_developer_easter_egg">Тут нема опцій розробника</string>
<string name="no_link_available">Не можливо отримати посилання</string>
<string name="no_link_available">Неможливо отримати посилання</string>
<string name="exit_when_submit">Покинути\?</string>
<string name="exit_when_submit_post_detail">Допис буде надіслано, навіть якщо Ви вийдете звідси.</string>
<string name="exit_when_edit_post_detail">Допис може бути надісланим, навіть якщо Ви вийдете звідси.</string>
<string name="exit_when_edit_comment_detail">Коментар може бути надісланим, навіть якщо Ви вийдете звідси.</string>
<string name="exit_when_edit_post_detail">Допис може бути надіслано, навіть якщо Ви вийдете звідси.</string>
<string name="exit_when_edit_comment_detail">Коментар може бути надіслано, навіть якщо Ви вийдете звідси.</string>
<string name="discard">Відхилити\?</string>
<string name="discard_detail">Усі чернетки НЕ збережуться.</string>
<string name="yes">Так</string>
@@ -424,11 +424,11 @@
<string name="comment_saved_failed">Неможливо зберегти коментар</string>
<string name="comment_unsaved_success">Коментар не збережено</string>
<string name="comment_unsaved_failed">Неможливо не зберегти коментар</string>
<string name="favorites">Відібрані</string>
<string name="favorites">Вибране</string>
<string name="all">Усе</string>
<string name="post_layout_card">Картковий вигляд</string>
<string name="post_layout_compact">Компактний вигляд</string>
<string name="elapsed_time_just_now">Тільки що</string>
<string name="elapsed_time_just_now">Щойно</string>
<string name="elapsed_time_a_minute_ago">1 хвилина</string>
<string name="elapsed_time_minutes_ago">%1$d хвилин</string>
<string name="elapsed_time_an_hour_ago">1 година</string>
@@ -439,12 +439,12 @@
<string name="elapsed_time_months_ago">%1$d місяців</string>
<string name="elapsed_time_a_year_ago">1 рік</string>
<string name="elapsed_time_years_ago">%1$d років</string>
<string name="error_getting_multi_reddit_data">Помилка отримання даних мультиредиту</string>
<string name="error_loading_multi_reddit_list">Не можливо синхронувати мультиредити</string>
<string name="error_loading_subscriptions">Не можливо синхронувати підписки</string>
<string name="share_this_app">Перевірте Infinity for Reddit — чудовий клієнт для Reddit!
<string name="error_getting_multi_reddit_data">Помилка отримання даних мультиспільноти</string>
<string name="error_loading_multi_reddit_list">Неможливо синхронувати мультиспільноти</string>
<string name="error_loading_subscriptions">Неможливо синхронувати підписки</string>
<string name="share_this_app">Спробуйте Eternity — чудовий клієнт для Lemmy!
\nhttps://play.google.com/store/apps/details\?id=eu.toldi.infinityforlemmy</string>
<string name="error_getting_community_name">Помилка отримання назви сабредиту</string>
<string name="error_getting_community_name">Помилка отримання назви спільноти</string>
<string name="share_post_link">Поширити ланку допису</string>
<string name="share_image_link">Поширити ланку зображення</string>
<string name="share_gif_link">Поширити ланку Gif</string>
@@ -456,12 +456,12 @@
<string name="copy_video_link">Копіювати ланку відео</string>
<string name="copy_link">Копіювати ланку</string>
<string name="copy_success">Скопійовано</string>
<string name="copy_link_failed">Не можливо скопіювати ланку</string>
<string name="copy_link_failed">Неможливо скопіювати ланку</string>
<string name="copy_text">Копіювати</string>
<string name="copy_all">Копіювати все</string>
<string name="copy_markdown">Копіювати Markdown</string>
<string name="copy_markdown">Копіювати з розміткою</string>
<string name="copy_raw_text">Копіювати сирий текст</string>
<string name="copy_all_markdown">Копіювати весь Markdown</string>
<string name="copy_all_markdown">Копіювати все з розміткою</string>
<string name="copy_all_raw_text">Копіювати весь сирий текст</string>
<string name="exit_app">Вийти\?</string>
<string name="light_theme">Світла тема</string>
@@ -470,16 +470,16 @@
<string name="multi_reddit_description_hint">Опис</string>
<string name="private_multi_reddit">Приватний</string>
<string name="no_multi_reddit_name">Де назва\?</string>
<string name="create_multi_reddit_failed">Не можливо створити цей мультиредит</string>
<string name="duplicate_multi_reddit">Такий мультиредит уже існує</string>
<string name="edit_multi_reddit_failed">Не можливо змінити цей мультиредит</string>
<string name="create_multi_reddit_failed">Неможливо створити мультиспільноту</string>
<string name="duplicate_multi_reddit">Така мультиспільнота вже існує</string>
<string name="edit_multi_reddit_failed">Неможливо змінити цю мультиспільноту</string>
<string name="delete_multi_reddit_success">Вдало видалено</string>
<string name="delete_multi_reddit_failed">Не вдалося видалити</string>
<string name="delete_multi_reddit_dialog_message">Ви впевнені\?</string>
<string name="enable_nsfw">Дозволити НБДР</string>
<string name="disable_nsfw">Заборонити НБДР</string>
<string name="cannot_save_image">Не можливо зберегти зображення</string>
<string name="cannot_save_gif">Не можливо зберегти gif</string>
<string name="cannot_save_image">Неможливо зберегти зображення</string>
<string name="cannot_save_gif">Неможливо зберегти gif</string>
<string name="cannot_get_storage">Нема доступу до сховища програми</string>
<string name="save_image_first">Зберігання зображення. Будь ласка, зачекайте.</string>
<string name="save_gif_first">Збереження gif. Будь ласка, зачекайте.</string>
@@ -494,7 +494,7 @@
<string name="theme_item_color_accent">Акцент кольору</string>
<string name="theme_item_color_accent_detail">Задіяно до: Панель поступу тощо</string>
<string name="theme_item_color_primary_light_theme">Основний колір світлої теми</string>
<string name="theme_item_color_primary_light_theme_detail">Задіяно до: тло плаваючої кнопки дії і кнопок</string>
<string name="theme_item_color_primary_light_theme_detail">Задіяно до: Тло плаваючої кнопки дії і кнопок</string>
<string name="theme_item_primary_text_color">Колір основного тексту</string>
<string name="theme_item_primary_text_color_detail">Задіяно до: Основний текст</string>
<string name="theme_item_secondary_text_color">Колір додаткового тексту</string>
@@ -511,9 +511,9 @@
<string name="theme_item_chip_text_color_detail">Задіяно до: Кнопка Підписатися</string>
<string name="theme_item_link_color">Колір посилання</string>
<string name="theme_item_link_color_detail">Задіяно до: URL</string>
<string name="theme_item_received_message_text_color">Колір тексту отриманого посилання</string>
<string name="theme_item_received_message_text_color">Колір тексту отриманого повідомлення</string>
<string name="theme_item_received_message_text_color_detail">Задіяно до: Отримані приватні повідомлення</string>
<string name="theme_item_sent_message_text_color">Колір тексту надісланого посилання</string>
<string name="theme_item_sent_message_text_color">Колір тексту надісланого повідомлення</string>
<string name="theme_item_sent_message_text_color_detail">Задіяно до: Надіслані приватні повідомлення</string>
<string name="theme_item_background_color">Колір тла</string>
<string name="theme_item_background_color_detail">Задіяно до: Тло кожної сторінки і шторки переходів</string>
@@ -525,9 +525,9 @@
<string name="theme_item_fully_collapsed_comment_background_color_detail">Задіяно до: Тло повністю згорнутих коментарів</string>
<string name="theme_item_awarded_comment_background_color">Колір тла коментаря з нагородою</string>
<string name="theme_item_awarded_comment_background_color_detail">Задіяно до: Тло нагороджених коментарів</string>
<string name="theme_item_received_message_background_color">Колір тла отриманого посилання</string>
<string name="theme_item_received_message_background_color">Колір тла отриманого повідомлення</string>
<string name="theme_item_received_message_background_color_detail">Задіяно до: Тло отриманих приватних повідомлень</string>
<string name="theme_item_sent_message_background_color">Колір тла надісланого посилання</string>
<string name="theme_item_sent_message_background_color">Колір тла надісланого повідомлення</string>
<string name="theme_item_sent_message_background_color_detail">Задіяно до: Тло надісланих приватних повідомлень</string>
<string name="theme_item_bottom_app_bar_background_color">Колір нижньої панелі пересування</string>
<string name="theme_item_bottom_app_bar_background_color_detail">Задіяно до: Кнопка панелі пересування</string>
@@ -538,14 +538,14 @@
<string name="theme_item_post_icon_and_info_color">Колір інформації і значка допису</string>
<string name="theme_item_post_icon_and_info_color_detail">Задіяно до: Значки, оцінка і кількість коментарів у дописах</string>
<string name="theme_item_comment_icon_and_info_color">Колір інформації і значка коментаря</string>
<string name="theme_item_comment_icon_and_info_color_detail">Задіяно до: Значки і оцінка в коментарях</string>
<string name="theme_item_comment_icon_and_info_color_detail">Задіяно до: Значки й оцінка в коментарях</string>
<string name="theme_item_fab_icon_color">Колір значка плаваючої кнопки дії</string>
<string name="theme_item_fab_icon_color_detail">Задіяно до: Значок плаваючої кнопки дії</string>
<string name="theme_item_send_message_icon_color">Колір значка надісланого повідомлення</string>
<string name="theme_item_send_message_icon_color_detail">Задіяно до: значка надсилання приватних повідомлень</string>
<string name="theme_item_toolbar_primary_text_and_icon_color">Колір значка і тексту основної панелі засобів</string>
<string name="theme_item_send_message_icon_color_detail">Задіяно до: Значок надсилання приватних повідомлень</string>
<string name="theme_item_toolbar_primary_text_and_icon_color">Колір значка й основного тексту панелі засобів</string>
<string name="theme_item_toolbar_primary_text_and_icon_color_detail">Задіяно до: Основний текст і значки на панелі засобів</string>
<string name="theme_item_toolbar_secondary_text_color">Колір тексту додаткової панелі засобів</string>
<string name="theme_item_toolbar_secondary_text_color">Колір додаткового тексту панелі засобів</string>
<string name="theme_item_toolbar_secondary_text_color_detail">Задіяно до: Додатковий текст на панелі засобів</string>
<string name="theme_item_circular_progress_bar_background_color">Колір тла кільцевої шкали поступу</string>
<string name="theme_item_circular_progress_bar_background_color_detail">Задіяно до: Тло кругової шкали поступу</string>
@@ -557,11 +557,11 @@
<string name="theme_item_tab_layout_with_expanded_collapsing_toolbar_tab_indicator_detail">Задіяно до: Колір індикатора вкладки у вигляді вкладок (розгорнута панель засобів)</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_tab_background">Колір тла вигляду вкладки в згорнутій панелі засобів</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_tab_background_detail">Задіяно до: Тло вигляду вкладки (згорнута панель засобів)</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_text_color">Колір тла п</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_text_color">Колір тексту вигляду вкладки в згорнутій панелі засобів</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_text_color_detail">Задіяно до: Колір тексту вигляду вкладки (згорнута панель засобів)</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_tab_indicator">Колір індикатора вкладки вигляду вкладки у згорнутій панелі засобів</string>
<string name="theme_item_tab_layout_with_collapsed_collapsing_toolbar_tab_indicator_detail">Задіяно до: Колір індикатора вкладки у вигляді вкладок (згорнута панель засобів)</string>
<string name="theme_item_upvoted_color">Колір з голосами вверх</string>
<string name="theme_item_upvoted_color">Колір з голосами вгору</string>
<string name="theme_item_upvoted_color_detail">Задіяно до: Кнопки голосування і оцінок (голос вгору)</string>
<string name="theme_item_downvoted_color">Колір з голосами вниз</string>
<string name="theme_item_downvoted_color_detail">Задіяно до: Кнопки голосування і оцінок (голос вниз)</string>
@@ -592,15 +592,15 @@
<string name="theme_item_crosspost_icon_tint">Колір значка передопису</string>
<string name="theme_item_crosspost_icon_tint_detail">Задіяно до: Значок передопису</string>
<string name="theme_item_stickied_post_icon_tint">Колір значка закріпленого допису</string>
<string name="theme_item_stickied_post_icon_tint_detail">Задіяно до: Значок приліпленого допису</string>
<string name="theme_item_stickied_post_icon_tint_detail">Задіяно до: Значок закріпленого допису</string>
<string name="theme_item_subscribed_color">Підписано</string>
<string name="theme_item_subscribed_color_detail">Задіяно до: Кнопка Відписатися</string>
<string name="theme_item_unsubscribed_color">Відписано</string>
<string name="theme_item_unsubscribed_color_detail">Задіяно до: Кнопка Підписатися</string>
<string name="theme_item_username_color">Колір імені користувача</string>
<string name="theme_item_username_color_detail">Задіяно до: Імʼя користувача</string>
<string name="theme_item_community_color">Колір сабредиту</string>
<string name="theme_item_community_color_detail">Задіяно до: Назва сабредиту</string>
<string name="theme_item_community_color">Колір спільноти</string>
<string name="theme_item_community_color_detail">Задіяно до: Назва спільноти</string>
<string name="theme_item_author_flair_text_color">Колір авторської лички</string>
<string name="theme_item_author_flair_text_color_detail">Задіяно до: Авторська личка в коментарях</string>
<string name="theme_item_submitter_color">Надсилач</string>
@@ -657,7 +657,7 @@
\nна основі теми Темної Індиґо</string>
<string name="create_amoled_theme">Створити тему Amoled
\nна основі теми Індиґо Amoled</string>
<string name="create_theme_info">Якщо Ви бажаєте створити тему на основі іншої теми, клацніть кнопку \"+\" біля неї.</string>
<string name="create_theme_info">Якщо бажаєте створити тему на основі іншої теми, клацніть кнопку «+» біля неї.</string>
<string name="edit_theme_name">Змінити назву теми</string>
<string name="edit_theme">Змінити тему</string>
<string name="delete_theme">Видалити тему</string>
@@ -665,27 +665,27 @@
<string name="share_theme">Поширити тему</string>
<string name="change_theme_name">Змінити назву</string>
<string name="theme_copied">Скопійовано! Вставте і поділіться нею з іншими людьми.</string>
<string name="copy_theme_faied">Не можливо скопіювати налаштування теми</string>
<string name="cannot_find_theme">Не можливо знайти цю тему</string>
<string name="copy_theme_faied">Неможливо скопіювати налаштування теми</string>
<string name="cannot_find_theme">Неможливо знайти цю тему</string>
<string name="import_theme">Імпорт теми</string>
<string name="no_data_in_clipboard">Не можливо знайти дані в буфері обміну</string>
<string name="no_data_in_clipboard">Неможливо знайти дані в буфері обміну</string>
<string name="import_theme_success">Тему вдало імпортовано</string>
<string name="parse_theme_failed">Не вдалося розпізнати тему</string>
<string name="duplicate_theme_name_dialog_title">Знайдено дублування теми</string>
<string name="duplicate_theme_name_dialog_title">Знайдено дублювання теми</string>
<string name="duplicate_theme_name_dialog_message">Тема в базі даних також називається %1$s. Бажаєте змінити назву для цієї імпортованої теми\?</string>
<string name="rename">Переназвати</string>
<string name="override">Перезаписати</string>
<string name="color_picker">Вибір кольору</string>
<string name="invalid_color">Неправильний колір</string>
<string name="delete_all_communities_success">Усі сабредити вдало видалено</string>
<string name="delete_all_communities_success">Усі спільноти вдало видалено</string>
<string name="delete_all_users_success">Усіх користувачів вдало видалено</string>
<string name="delete_all_sort_types_success">Усі типи сортування вдало видалено</string>
<string name="delete_all_post_layouts_success">Усі вигляди дописів вдало видалено</string>
<string name="delete_all_themes_success">Усі теми вдало видалено</string>
<string name="delete_all_front_page_scrolled_positions_success">Усі позиції гортання на першій сторінці вдало видалено</string>
<string name="reset_all_settings_success">Усі налаштування вдало скинуто</string>
<string name="username_preview">u/Hostilenemy</string>
<string name="community_preview">r/Infinity_For_Reddit</string>
<string name="username_preview">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="community_preview">!eternityapp@lemdro.id</string>
<string name="primary_text_preview">Основний текст</string>
<string name="secondary_text_preview">Додатковий текст</string>
<string name="post_title_preview">Це допис</string>
@@ -696,14 +696,14 @@
<string name="author_flair_preview">Авторська личка</string>
<string name="comment_content_preview">Я дав своїй дівчині листівку «Поправляйся швидше».
\nВона не хвора чи щось таке, але їй точно стане краще.</string>
<string name="edit_multi_reddit">Змінити мультиредит</string>
<string name="delete_multi_reddit">Видалити мультиредит</string>
<string name="n_awards">%1$d нагород</string>
<string name="edit_multi_reddit">Змінити мультиспільноту</string>
<string name="delete_multi_reddit">Видалити мультиспільноту</string>
<string name="n_awards">%1$,d нагород</string>
<string name="one_award">1 нагорода</string>
<string name="report">Повідомити</string>
<string name="reporting">Звітування</string>
<string name="report_successful">Відзвітовано</string>
<string name="report_failed">Не вдалося відзвітувати</string>
<string name="report">Поскаржитися</string>
<string name="reporting">Надсилання скарги</string>
<string name="report_successful">Скаргу надіслано</string>
<string name="report_failed">Не вдалося надіслати скаргу</string>
<string name="report_reason_not_selected">Ви не вибрали причину</string>
<string name="report_reason_general_spam">Це спам</string>
<string name="report_reason_general_copyright_issue">Містить проблему авторських прав</string>
@@ -717,7 +717,7 @@
<string name="fetch_gfycat_video_failed">Не вдалося отримати відеозапис Gfycat</string>
<string name="fetch_redgifs_video_failed">Не вдалося отримати відеозапис Redgifs</string>
<string name="fetching_video_info_please_wait">Отримання відомостей про відео. Зачекайте.</string>
<string name="error_fetching_imgur_media">Не можливо завантажити зображення</string>
<string name="error_fetching_imgur_media">Неможливо завантажити зображення</string>
<string name="downloading_reddit_video">Завантаження доріжки відео</string>
<string name="downloading_reddit_video_audio_track">Завантаження звукової доріжки</string>
<string name="downloading_reddit_video_muxing">Мультиплексування відео і звуку</string>
@@ -727,22 +727,21 @@
<string name="downloading_reddit_video_failed_cannot_download_video">Не вдалося завантажити: неможливо завантажити відеозапис</string>
<string name="downloading_reddit_video_failed_cannot_save_video">Не вдалося завантажити: неможливо зберегти відеозапис у каталог кешу</string>
<string name="downloading_reddit_video_failed_cannot_save_audio">Не вдалося завантажити: неможливо зберегти звук у каталог кешу</string>
<string name="downloading_reddit_video_failed_cannot_mux">Не вдалося завантажити: не можливо змультиплексувати відео і звук</string>
<string name="downloading_reddit_video_failed_cannot_mux">Не вдалося завантажити: неможливо змультиплексувати відео і звук</string>
<string name="downloading_reddit_video_failed_cannot_save_mux_video">Не вдалося завантажити: неможливо зберегти відеозапис у публічний каталог</string>
<string name="wallpaper_set">Шпалери встановлено</string>
<string name="error_set_wallpaper">Не вдалося встановити шпалери</string>
<string name="set_to_home_screen">Установити на домашній екран</string>
<string name="set_to_lock_screen">Встановити на екран блокування</string>
<string name="set_to_both">Задати для двох</string>
<string name="set_to_lock_screen">Установити на екран блокування</string>
<string name="set_to_both">Установити для обох</string>
<string name="default_font_font_preview">Типово</string>
<string name="load_video_in_redgifs">Спробувати завантажити відеозапис на Redgifs</string>
<string name="top_score">%1$s блв</string>
<string name="login_activity_2fa_prompt">Якщо у Вас дозволена 2-факторна автентифікація, вводьте свій пароль наступним чином: &lt;пароль&gt;:&lt;код 2ФА&gt;.
\nПриклад: yourpass:123456</string>
<string name="top_score">%1$s балів</string>
<string name="login_activity_2fa_prompt">Якщо у Вас увімкнено 2-факторну автентифікацію, Вам треба заповнити поле «Токен 2FA». Якщо ні — залиште його порожнім</string>
<string name="submit_crosspost_activity_label">Передопис</string>
<string name="give_award_activity_label">Дати нагороду</string>
<string name="action_crosspost">Передопис</string>
<string name="action_select_user_flair">Вибрати користувацьку личку</string>
<string name="action_select_user_flair">Вибрати личку користувача</string>
<string name="action_give_award">Дати нагороду</string>
<string name="posts">Дописи</string>
<string name="only_for_logged_in_user">Лише для користувачів, що ввійшли</string>
@@ -757,13 +756,13 @@
<string name="settings_more_tabs_summary">Більше вкладок</string>
<string name="settings_more_tabs_info_summary">Увімкнення наступних параметрів призведе до ненавмисної поведінки:
\nВкладки можуть втратити весь вміст після перемикання на інші. Це те саме що оновлення сторінки.</string>
<string name="settings_more_tabs_show_favorite_subscribed_communities_title">Показувати відібрані підписані сабредити</string>
<string name="settings_more_tabs_show_subscribed_communities_title">Показувати підписані сабредити</string>
<string name="settings_more_tabs_show_favorite_subscribed_communities_title">Показувати вибрані підписані спільноти</string>
<string name="settings_more_tabs_show_subscribed_communities_title">Показувати підписані спільноти</string>
<string name="settings_download_location_title">Розташування завантажень</string>
<string name="settings_image_download_location_title">Розташування завантажених зображень</string>
<string name="settings_gif_download_location_title">Розташування завантажених Gif</string>
<string name="settings_video_download_location_title">Розташування завантажених відеозаписів</string>
<string name="settings_separate_folder_for_each_community">Окрема тека для кожного сабредиту</string>
<string name="settings_separate_folder_for_each_community">Окрема тека для кожної спільноти</string>
<string name="settings_swipe_action_title">Дії ковзанням</string>
<string name="settings_disable_swiping_between_tabs_title">Вимкнути ковзання між вкладками</string>
<string name="settings_enable_swipe_action_title">Дозволити дії ковзанням</string>
@@ -781,11 +780,8 @@
<string name="settings_bottom_app_bar_option_3">Параметр 3</string>
<string name="settings_bottom_app_bar_option_4">Параметр 4</string>
<string name="settings_bottom_app_bar_fab">Плаваюча кнопка дії</string>
<string name="settings_data_saving_mode">Режим збереження даних</string>
<string name="settings_data_saving_mode_info_summary">У режимі зберігання даних:
\nПопередній перегляд зображень має низьку роздільність.
\nВідеозаписи Reddit мають низьку роздільність.
\nВимкнено самовідтворення відеозаписів.</string>
<string name="settings_data_saving_mode">Режим заощадження трафіку</string>
<string name="settings_data_saving_mode_info_summary">У режимі заощадження трафіку: Попередній перегляд зображень має низьку роздільність. Відеозаписи Lemmy мають низьку роздільність. Вимкнено самовідтворення відеозаписів.</string>
<string name="settings_translation_title">Переклад</string>
<string name="settings_translation_summary">Цей застосунок перекладається через POEditor. Дякую всім співрозробникам.</string>
<string name="settings_credits_national_flags">Міжнародні прапори</string>
@@ -796,8 +792,8 @@
<string name="downloading_image_or_gif_failed_cannot_get_destination_directory">Не вдалося завантажити: нема доступу до призначеного каталогу</string>
<string name="downloading_media_failed_cannot_download_media">Не вдалося завантажити</string>
<string name="downloading_media_failed_cannot_save_to_destination_directory">Не вдалося завантажити: файл не зберігається в призначений каталог</string>
<string name="select_user_flair_success">Виділено користувацьку личку</string>
<string name="select_this_user_flair">Вибрати цю мітку користувача\?</string>
<string name="select_user_flair_success">Вибрано личку користувача</string>
<string name="select_this_user_flair">Вибрати цю личку користувача\?</string>
<string name="select_header_size">Вибрати розмір заголовка</string>
<string name="large">Великий</string>
<string name="small">Малий</string>
@@ -817,48 +813,48 @@
<string name="give_award_success">Дано нагороду</string>
<string name="give_award_failed">Не вдалося</string>
<string name="warning">Попередження</string>
<string name="this_is_a_nsfw_community">Це сабредит НБДР.</string>
<string name="this_is_a_nsfw_community">Це спільнота НБДР.</string>
<string name="this_user_has_nsfw_content">У цього користувача є вміст НБДР</string>
<string name="dismiss">Відхилити</string>
<string name="leave">Залишити</string>
<string name="go_to_community">Перейти до сабредиту</string>
<string name="go_to_community">Перейти до спільноти</string>
<string name="go_to_user">Перейти до користувача</string>
<string name="go_to_thing_hint">Назва</string>
<string name="random">Випадкове</string>
<string name="random_community">Випадковий сабредит</string>
<string name="random_nsfw_community">Випадковий сабредит НБДР</string>
<string name="random_community">Випадкова спільнота</string>
<string name="random_nsfw_community">Випадкова спільнота НБДР</string>
<string name="random_post">Випадковий допис</string>
<string name="random_nsfw_post">Випадковий допис НБДР</string>
<string name="fetch_random_thing_failed">Спробуйте пізніше</string>
<string name="downloading">Завантаження</string>
<string name="community_filter_popular_and_all_activity_label">r/all і r/popular</string>
<string name="settings_miscellaneous_title">Різне</string>
<string name="settings_respect_community_recommended_comment_sort_type_title">Поважати тип сортування рекомендованих коментарів сабредиту</string>
<string name="settings_respect_community_recommended_comment_sort_type_title">Поважати тип сортування рекомендованих коментарів спільноти</string>
<string name="settings_respect_community_recommended_comment_sort_type_summary">Тип сортування коментарів не збережеться</string>
<string name="settings_community_filter_category">Ховати сабредити</string>
<string name="settings_community_filter_category">Ховати спільноти</string>
<string name="settings_community_filter_popular_and_all">У r/popular і r/all</string>
<string name="settings_credits_ufo_capturing_animation_title">Анімація захоплення НЛО</string>
<string name="select_video_quality">Вибрати якість відео</string>
<string name="settings_swipe_action_haptic_feedback_title">Тактильний відгук</string>
<string name="settings_hide_community_description_title">Ховати опис сабредиту</string>
<string name="settings_disable_image_preview_title">Вимкнути передперегляд зображень у режимі збереження даних</string>
<string name="settings_hide_community_description_title">Ховати опис спільноти</string>
<string name="settings_disable_image_preview_title">Вимкнути передперегляд зображень у режимі заощадження трафіку</string>
<string name="settings_swipe_action_swipe_left_title">Ковзнути ліворуч</string>
<string name="settings_swipe_action_swipe_right_title">Ковзнути праворуч</string>
<string name="settings_swipe_action_info_summary">Не застосовується до стрічок з дописами із більше ніж 1 стовпцем або відомостями про допис.</string>
<string name="theme_item_no_preview_post_type_icon_tint">Колір значка типу допису без передперегляду</string>
<string name="theme_item_no_preview_post_type_icon_tint_detail">Задіяти до: значок, що позначає тип допису коли не доступний передперегляд</string>
<string name="theme_item_no_preview_post_type_icon_tint_detail">Задіяти до: Значок, що вказує тип допису, якщо попередній перегляд недоступний</string>
<string name="theme_item_no_preview_post_type_background_color">Колір тла типу допису без передперегляду</string>
<string name="theme_item_no_preview_post_type_background_color_detail">Задіяно до: Заповнювач, що вказує тип публікації, якщо попередній перегляд недоступний</string>
<string name="theme_item_no_preview_post_type_background_color_detail">Задіяно до: Заповнювач, що вказує тип допису, якщо попередній перегляд недоступний</string>
<string name="settings_language_title">Мова</string>
<string name="customize_post_filter_activity_label">Налаштувати фільтр дописів</string>
<string name="filtered_posts_activity_subtitle">Відфільтровані дописи</string>
<string name="post_filter_preference_activity_label">Фільтр дописів</string>
<string name="search_users_result_activity_label">Користувачі</string>
<string name="multireddit_selection_activity_label">Вибрати мультиредит</string>
<string name="multireddit_selection_activity_label">Вибрати мультиспільноту</string>
<string name="action_save_to_database">Зберегти до бази даних</string>
<string name="action_read_all_messages">Прочитати всі повідомлення</string>
<string name="action_add_to_multireddit">Додати в мультиредит</string>
<string name="search_only_communities_hint">Пошук сабредитів</string>
<string name="action_add_to_multireddit">Додати в мультиспільноту</string>
<string name="search_only_communities_hint">Пошук спільнот</string>
<string name="search_only_users_hint">Пошук користувачів</string>
<string name="post_type_gif">Gif</string>
<string name="post_type_gallery">Галерея</string>
@@ -875,12 +871,12 @@
<string name="settings_hide_read_posts_automatically_title">Ховати прочитані дописи автоматично</string>
<string name="settings_sort_type_title">Тип сортування</string>
<string name="settings_save_sort_type_title">Зберегти тип сортування</string>
<string name="settings_community_default_sort_type_title">Типовий для сабредиту тип сортування</string>
<string name="settings_community_default_sort_time_title">Типовий час сортування сабредиту</string>
<string name="settings_user_default_sort_type_title">Типовий для користувача тип сортування</string>
<string name="settings_community_default_sort_type_title">Типовий для спільноти тип сортування</string>
<string name="settings_community_default_sort_time_title">Типовий для спільноти час сортування</string>
<string name="settings_user_default_sort_type_title">Користувацький типовий тип сортування</string>
<string name="settings_user_default_sort_time_title">Користувацький типовий час сортування</string>
<string name="open_link">Відкрити ланку</string>
<string name="select_communities_and_users">Вибрати сабредити і користувачів</string>
<string name="select_communities_and_users">Вибрати спільноти і користувачів</string>
<string name="theme_item_read_post_title_color">Колір заголовка прочитаного допису</string>
<string name="theme_item_read_post_title_color_detail">Задіяно до: Заголовок прочитаного допису</string>
<string name="theme_item_read_post_content_color">Колір вмісту прочитаного допису</string>
@@ -893,8 +889,8 @@
<string name="only_nsfw">Лише НБДР</string>
<string name="only_spoiler">Лише спойлер</string>
<string name="title_excludes_strings_hint">Заголовок: виключати ключові слова (слово1,слово2)</string>
<string name="title_excludes_regex_hint">Заголовок: виключати рег.вир.</string>
<string name="exclude_communities_hint">Не враховувати сабредити (напр., funny,AskReddit)</string>
<string name="title_excludes_regex_hint">Заголовок: виключати регулярний вираз</string>
<string name="exclude_communities_hint">Не враховувати спільноти (напр., memes,AskLemmy)</string>
<string name="exclude_users_hint">Не враховувати користувачів (напр., Hostilenemy,random)</string>
<string name="exclude_flairs_hint">Не враховувати лички (напр., личка1,личка2)</string>
<string name="contain_flairs_hint">Містить лички (напр., личка1,личка2)</string>
@@ -910,37 +906,37 @@
<string name="duplicate_post_filter_dialog_message">Перезаписати його\?</string>
<string name="apply_post_filter_to">Задіяно до</string>
<string name="post_filter_usage_home">Домівка</string>
<string name="post_filter_usage_community">Сабредит: %1$s</string>
<string name="post_filter_usage_community_all">Сабредит</string>
<string name="post_filter_usage_community">Спільнота: %1$s</string>
<string name="post_filter_usage_community_all">Спільнота</string>
<string name="post_filter_usage_user">Користувач: %1$s</string>
<string name="post_filter_usage_user_all">Користувач</string>
<string name="post_filter_usage_multireddit">Мультиредит: %1$s</string>
<string name="post_filter_usage_multireddit_all">Мультиредит</string>
<string name="post_filter_usage_multireddit">Мультиспільнота: %1$s</string>
<string name="post_filter_usage_multireddit_all">Мультиспільнота</string>
<string name="post_filter_usage_search">Пошук</string>
<string name="community">Сабредит</string>
<string name="community">Спільнота</string>
<string name="user">Користувач</string>
<string name="edit_post_filter_name_of_usage_info">Залиште порожнім, щоб застосувати цей фільтр дописів для всіх сабредитів / користувачів / мультиредитів</string>
<string name="edit_post_filter_name_of_usage_info">Залиште порожнім, щоб застосувати цей фільтр дописів для всіх спільнот / користувачів / мультиспільнот</string>
<string name="read_all_messages_time_limit">Ви робите це занадто часто. Спробуйте ще раз пізніше. Це обмеження швидкості API Reddit.</string>
<string name="read_all_messages_success">Усі повідомлення успішно прочитано</string>
<string name="read_all_messages_failed">Не можливо прочитати всі повідомлення</string>
<string name="add_community_or_user_to_multireddit_success">%1$s додано до мультиредиту %2$s</string>
<string name="add_community_or_user_to_multireddit_failed">Неможливо додати %1$s до мультиредиту %2$s</string>
<string name="read_all_messages_failed">Неможливо прочитати всі повідомлення</string>
<string name="add_community_or_user_to_multireddit_success">%1$s додано до мультиспільноти %2$s</string>
<string name="add_community_or_user_to_multireddit_failed">Неможливо додати %1$s до мультиспільноти %2$s</string>
<string name="choose_a_user">Оберіть користувача</string>
<string name="settings_click_to_show_media_in_gallery_layout">Клацнути, щоб показати медія у вигляді галереї</string>
<string name="settings_click_to_show_media_in_gallery_layout">Клацнути, щоб показати медіа у вигляді галереї</string>
<string name="settings_hide_post_type">Ховати тип дописів</string>
<string name="settings_hide_the_number_of_awards">Ховати кількість нагород</string>
<string name="settings_hide_community_and_user_prefix">Ховати префікс сабредитів і користувачів</string>
<string name="settings_hide_community_and_user_prefix">Ховати префікс спільнот і користувачів</string>
<string name="settings_hide_the_number_of_votes">Ховати кількість голосів</string>
<string name="settings_hide_the_number_of_comments">Ховати кількість коментарів</string>
<string name="post_layout_gallery">Вигляд галереї</string>
<string name="post_layout_card_2">Картковий вигляд 2</string>
<string name="have_trouble_login_title">Є проблеми з входом</string>
<string name="have_trouble_login_message">Бажаєте спробувати інший спосіб входу\?</string>
<string name="vote">Оцінка</string>
<string name="vote">Голос</string>
<string name="action_share_link">Поширити ланку</string>
<string name="action_copy_link">Копіювати ланку</string>
<string name="action_add_to_post_filter">Додати до фільтру дописів</string>
<string name="settings_do_not_blur_nsfw_in_nsfw_communities_title">Не розмивати зображення НБДР для сабредитів НБДР</string>
<string name="settings_do_not_blur_nsfw_in_nsfw_communities_title">Не розмивати зображення НБДР для спільнот НБДР</string>
<string name="settings_show_avatar_on_the_right">Показувати аватарку праворуч</string>
<string name="settings_backup_settings_title">Налаштування резервного копіювання</string>
<string name="settings_restore_settings_title">Налаштування відновлення</string>
@@ -950,32 +946,32 @@
<string name="settings_collapse_account_section_title">Згорнути розділ Обліківка</string>
<string name="settings_collapse_post_section_title">Згорнути розділ Допис</string>
<string name="settings_collapse_preferences_section_title">Згорнути розділ Властивості</string>
<string name="settings_collapse_favorite_communities_section_title">Згорнути розділ відібраних сабредитів</string>
<string name="settings_collapse_subscribed_communities_section_title">Згорнути розділ підписаних сабредитів</string>
<string name="settings_hide_favorite_communities_sections_title">Сховати розділ відібраних сабредитів</string>
<string name="settings_hide_subscribed_communities_sections_title">Сховати розділ підписаних сабредитів</string>
<string name="settings_collapse_favorite_communities_section_title">Згорнути розділ вибраних спільнот</string>
<string name="settings_collapse_subscribed_communities_section_title">Згорнути розділ підписаних спільнот</string>
<string name="settings_hide_favorite_communities_sections_title">Сховати розділ вибраних спільнот</string>
<string name="settings_hide_subscribed_communities_sections_title">Сховати розділ підписаних спільнот</string>
<string name="settings_default_search_result_tab">Типова вкладка результатів пошуку</string>
<string name="device_default">Типовий пристрій</string>
<string name="device_default">Тема пристрою</string>
<string name="set_by_battery_saver">Залежно від рівня батареї</string>
<string name="theme_item_upvote_ratio_icon_tint">Колір значка оцінки вверх</string>
<string name="theme_item_upvote_ratio_icon_tint_detail">Задіяти до: значок оцінки вверх</string>
<string name="theme_item_upvote_ratio_icon_tint">Колір значка голосу вгору</string>
<string name="theme_item_upvote_ratio_icon_tint_detail">Задіяти до: Значок голосу вгору</string>
<string name="theme_item_current_user_color">Поточний користувач</string>
<string name="theme_item_current_user_color_detail">Задіяно до: Поточний користувач у коментарях</string>
<string name="exclude_domains_hint">Виключати домени</string>
<string name="anonymous_front_page_no_subscriptions">Розпочніть долучившись до сабредиту!</string>
<string name="anonymous_front_page_no_subscriptions">Розпочніть, долучившись до спільноти!</string>
<string name="backup_settings_success">Налаштування вдало експортовано в призначений каталог. Пароль для зґенерованого zip-файлу — 123321. Будь ласка, не змінюйте файл zip.</string>
<string name="create_zip_in_destination_directory_failed">Не вдалося створити резервну zip-копію в призначеному каталозі</string>
<string name="backup_some_settings_failed">Не вдалося зарезервувати деякі налаштування, але інші вдало експортовано в призначений каталог</string>
<string name="restore_settings_success">Налаштування успішно відновлено. Перезапустіть застосунок, щоб побачити зміни.</string>
<string name="restore_settings_partially_failed">Деякі налаштування можливо не відновляться успішно. Перезапустіть застосунок, щоб побачити зміни.</string>
<string name="restore_settings_failed_file_corrupted">Не можливо відновити налаштування. Файл можливо пошкоджений.</string>
<string name="restore_settings_failed_file_corrupted">Неможливо відновити налаштування. Ймовірно, файл пошкоджений.</string>
<string name="restore_settings_failed_cannot_get_file">Нема доступу до файлу</string>
<string name="suicide_prevention_quote">Якщо Ви бачите знак не вбивати себе, так ось він і є.❤</string>
<string name="suicide_prevention_quote">Якщо Ви шукаєте знак не вбивати себе, то ось він і є.❤</string>
<string name="do_not_show_this_again">Не показувати це знову</string>
<string name="continue_suicide_prevention_activity">Продовжити</string>
<string name="error_fetching_v_redd_it_video_cannot_get_redirect_url">Помилка отримання відеозапису із v.redd.it: Не можливо отримати url перенаправлення</string>
<string name="error_fetching_v_redd_it_video_cannot_get_post">Помилка отримання відеозапису із v.redd.it: Не можливо отримати допис</string>
<string name="error_fetching_v_redd_it_video_cannot_get_post_id">Помилка отримання відеозапису із v.redd.it: Не можливо отримати ід допису</string>
<string name="error_fetching_v_redd_it_video_cannot_get_redirect_url">Помилка отримання відеозапису з v.redd.it: Неможливо отримати URL перенаправлення</string>
<string name="error_fetching_v_redd_it_video_cannot_get_post">Помилка отримання відеозапису з v.redd.it: Неможливо отримати допис</string>
<string name="error_fetching_v_redd_it_video_cannot_get_post_id">Помилка отримання відеозапису з v.redd.it: Неможливо отримати ID допису</string>
<string name="always_on">Завжди увімк.</string>
<string name="only_on_wifi">Лише через Wifi</string>
<string name="never">Ніколи</string>
@@ -985,10 +981,10 @@
<string name="default_in_array">Типово</string>
<string name="off">Вимк.</string>
<string name="only_on_cellular_data">Лише під час стільникових даних</string>
<string name="upvote">Голосувати вверх</string>
<string name="upvote">Голосувати вгору</string>
<string name="downvote">Голосувати вниз</string>
<string name="select">Вибрати</string>
<string name="exclude_community">Виключити цей сабредит</string>
<string name="exclude_community">Виключити цю спільноту</string>
<string name="exclude_user">Виключити цього користувача</string>
<string name="exclude_flair">Виключити цю личку</string>
<string name="contain_flair">Містить цю личку</string>
@@ -996,7 +992,7 @@
<string name="suggest_title">Пропонований заголовок</string>
<string name="suggest_title_failed">Не вдалося запропонувати заголовок</string>
<string name="action_delete_logs">Видалити журнали</string>
<string name="inbox_with_count">Вхідні (%1$d)</string>
<string name="inbox_with_count">Вхідні (%1$,d)</string>
<string name="comment_continue_thread">Продовжити гілку</string>
<string name="settings_swipe_vertically_to_go_back_from_media_title">Ковзніть вертикально, щоб вернутися назад від зображення або Gif</string>
<string name="settings_hide_post_flair">Ховати лички дописів</string>
@@ -1006,10 +1002,10 @@
<string name="settings_show_only_one_comment_level_indicator">Показувати лише один показник рівня коментарів</string>
<string name="save_comment">Зберегти</string>
<string name="unsave_comment">Не зберігати</string>
<string name="copy_multi_reddit_path">Копіювати шлях мультиредиту</string>
<string name="copy_multi_reddit_path_failed">Неможливо скопіювати шлях мультиредиту</string>
<string name="copy_multi_reddit_path">Копіювати шлях мультиспільноти</string>
<string name="copy_multi_reddit_path_failed">Неможливо скопіювати шлях мультиспільноти</string>
<string name="crash_reports_deleted">Звіти про збої видалено</string>
<string name="disable_nsfw_forever_message">Увімкнувши раз, НБДР буде назавжди вимкнено, не залежно від того ввімкнено параметр НБДР чи ні. І ця опція незворотна, єдиний спосіб знову ввімкнути NSFW — очистити дані програми.
<string name="disable_nsfw_forever_message">Увімкнувши тут, Ви назавжди вимкнете НБДР, незалежно від того, ввімкнено параметр НБДР чи ні. Ця опція незворотна, єдиний спосіб знову ввімкнути НБДР — очистити дані програми.
\n
\nУсе ще бажаєте ввімкнути це\?</string>
<string name="reply">Відповісти</string>
@@ -1020,7 +1016,7 @@
<string name="receive_post_reply_notifications">Отримувати сповіщення про відповіді на дописи</string>
<string name="bottom_sheet_post_gallery">Галерея</string>
<string name="posting_gallery">Публікування галереї</string>
<string name="label_reddit">Reddit</string>
<string name="label_reddit">Lemmy</string>
<string name="settings_default_link_post_layout">Типовий вигляд посилань дописів</string>
<string name="settings_category_material_you_title">Material You</string>
<string name="settings_enable_material_you_warning_summary">Переконайтеся, що Ви не маєте тем із назвою
@@ -1032,10 +1028,10 @@
<string name="settings_enable_material_you_summary">Персоналізувати Infinity на основі Ваших шпалер</string>
<string name="settings_apply_material_you_title">Застосувати Material You</string>
<string name="settings_apply_material_you_summary">На випадок, якщо Infinity не змінює тему</string>
<string name="settings_more_tabs_show_favorite_multireddits_title">Показувати відібрані мультиредити</string>
<string name="settings_more_tabs_show_multireddits_title">Показувати мультиредити</string>
<string name="settings_collapse_reddit_section_title">Згорнути розділ Reddit</string>
<string name="settings_video_player_automatic_landscape_orientation">Автоматично перемикати на альбомну орієнтацію у відео-програвачі</string>
<string name="settings_more_tabs_show_favorite_multireddits_title">Показувати вибрані мультиспільноти</string>
<string name="settings_more_tabs_show_multireddits_title">Показувати мультиспільноти</string>
<string name="settings_collapse_reddit_section_title">Згорнути розділ Lemmy</string>
<string name="settings_video_player_automatic_landscape_orientation">Автоматично перемикати на альбомну орієнтацію у відеопрогравачі</string>
<string name="settings_remember_muting_option_in_post_feed">Запамʼятати опцію приглушення в стрічці дописів</string>
<string name="link_post_layout_auto">Авто</string>
<string name="uploaded_images">Відвантажені зображення</string>
@@ -1057,19 +1053,19 @@
<string name="settings_post_details_title">Відомості дописів</string>
<string name="settings_separate_post_and_comments_in_portrait_mode_title">Відокремлювати дописи і коментарі в портретному режимі</string>
<string name="settings_separate_post_and_comments_in_landscape_mode_title">Відокремлювати дописи і коментарі в альбомному режимі</string>
<string name="settings_separate_post_and_comments_summary">Автовідтворення відео недозволене на сторінці відомостей допису</string>
<string name="settings_use_bottom_toolbar_in_media_viewer_title">Викор. нижню панель засобів під час перегляду медія</string>
<string name="settings_separate_post_and_comments_summary">Автовідтворення відео не дозволене на сторінці відомостей допису</string>
<string name="settings_use_bottom_toolbar_in_media_viewer_title">Викор. нижню панель засобів під час перегляду медіа</string>
<string name="settings_secure_mode_title">Безпечний режим</string>
<string name="settings_secure_mode_summary">Знімки екрана і запис відео не дозволено. Нема передперегляду на екрані свіжого в застосунку.</string>
<string name="discard_dialog_button">Відхилити</string>
<string name="settings_secure_mode_summary">Заборонено зімки екрана і запис відео. Нема передперегляду при перемиканні застосунків.</string>
<string name="discard_dialog_button">Скасувати зміни</string>
<string name="error_loading_wiki">Помилка завантаження вікі</string>
<string name="no_wiki">Цей сабредит немає вікісторінки</string>
<string name="no_wiki">Ця спільнота не має вікі-сторінки</string>
<string name="material_you_notification_title">Застосування Material You</string>
<string name="action_go_to_wiki">Перейти до Вікі</string>
<string name="action_playback_speed">Швидкість відтворення</string>
<string name="about">Про</string>
<string name="settings_link_handler_title">Обробка посилань</string>
<string name="settings_main_page_back_button_action">Дія кнопки Назад на основній сторінці</string>
<string name="settings_link_handler_title">Обробник посилань</string>
<string name="settings_main_page_back_button_action">Дія кнопки «Назад» на основній сторінці</string>
<string name="settings_open_navigation_drawer">Відкрити шторку переходів</string>
<string name="settings_number_of_columns_in_post_feed_unfolded_portrait_title">Портрет (Не згорнуто)</string>
<string name="settings_number_of_columns_in_post_feed_unfolded_landscape_title">Альбом (Не згорнуто)</string>
@@ -1087,16 +1083,16 @@
<string name="settings_legacy_autoplay_video_controller_ui_title">Успадкований КІ керування відеозаписами</string>
<string name="settings_pinch_to_zoom_video_title">Щипком збільшувати відео</string>
<string name="settings_experimental_feature">Експериментальна функція</string>
<string name="theme_item_media_indicator_icon_color">Колір значка індикатора медія</string>
<string name="theme_item_media_indicator_icon_color_detail">Задіяно до: значки відеозаписів або галереї на передперегляді допису</string>
<string name="theme_item_media_indicator_background_color">Колір тла індикатора медія</string>
<string name="theme_item_media_indicator_background_color_detail">Задіяно до: тло значка відеозапису або галереї на передперегляді допису</string>
<string name="go_to_top">Перейти на верх</string>
<string name="theme_item_media_indicator_icon_color">Колір значка індикатора медіа</string>
<string name="theme_item_media_indicator_icon_color_detail">Задіяно до: Значки відеозаписів або галереї на передперегляді допису</string>
<string name="theme_item_media_indicator_background_color">Колір тла індикатора медіа</string>
<string name="theme_item_media_indicator_background_color_detail">Задіяно до: Тло значка відеозапису або галереї на передперегляді допису</string>
<string name="go_to_top">Перейти наверх</string>
<string name="title_contains_strings_hint">Заголовок: містить ключові слова (слово1,слово2)</string>
<string name="title_contains_regex_hint">Заголовок: містить рег.вир.</string>
<string name="title_contains_regex_hint">Заголовок: містить регулярний вираз</string>
<string name="contain_domains_hint">Містить домени</string>
<string name="anonymous_multireddit_no_community">Цей мультиредит немає сабредиту!</string>
<string name="error_fetching_v_redd_it_video_cannot_get_video_url">Помилка отримання відеозапису із v.redd.it: Не можливо отримати url відеозапису</string>
<string name="anonymous_multireddit_no_community">Ця мультиспільнота не має спільнот!</string>
<string name="error_fetching_v_redd_it_video_cannot_get_video_url">Помилка отримання відеозапису з v.redd.it: Неможливо отримати URL відеозапису</string>
<string name="contain_domain">Містить цей домен</string>
<string name="lock_screen_text">Хто тут!!!</string>
<string name="app_lock_timeout_immediately">Негайно</string>
@@ -1116,19 +1112,19 @@
<string name="app_lock_timeout_12_hours">12 годин</string>
<string name="app_lock_timeout_24_hours">24 години</string>
<string name="edit_profile_activity_label">Змінити профіль</string>
<string name="action_contact_mods">Моди контактів</string>
<string name="settings_save_nsfw_media_in_different_folder_title">Зберігати НБДР-медія в інше місце</string>
<string name="action_contact_mods">Написати модераторам</string>
<string name="settings_save_nsfw_media_in_different_folder_title">Зберігати НБДР-медіа в інше місце</string>
<string name="settings_nsfw_download_location_title">Місце завантаження НБДР</string>
<string name="fetch_streamable_video_failed">Не вдалося отримати потоковий відеозапис</string>
<!-- EditProfileService Notification -->
<string name="submit_change_avatar">Надіслати змінену аватарку</string>
<string name="submit_change_banner">Надіслати змінений банер</string>
<string name="submit_save_profile">Надіслати зберігання профілю</string>
<string name="submit_save_profile">Зберегти профіль</string>
<!-- EditProfileActivity -->
<string name="action_edit_profile">Змінити профіль</string>
<string name="remove_avatar">Вилучити аватарку</string>
<string name="remove_banner">Вилучити банер</string>
<string name="display_name_text">Відобразити назву</string>
<string name="display_name_text">Відображуване ім\'я</string>
<string name="display_name_hint">Показувати на Вашій сторінці профілю</string>
<string name="display_name_description">Це буде відображатися переглядачам Вашої сторінки профілю і не змінює Вашого імені користувача.</string>
<string name="about_you_text">Про себе</string>
@@ -1149,23 +1145,23 @@
<string name="two_options_required">Хороше опитування потребує два або більше варіантів!</string>
<string name="bottom_sheet_post_poll">Опитування</string>
<string name="no_activity_found_for_external_browser">Нема програми, яка може обробити дію відкривання в зовнішньому оглядачі</string>
<string name="settings_require_authentication_to_show_accounts">Щоб показати обліківки потрібна автентифікація</string>
<string name="settings_require_authentication_to_show_accounts">Вимагати автентифікацію, щоб показати обліківки</string>
<string name="settings_custom_font_family_title">Власне сімейство шрифтів</string>
<string name="settings_custom_title_font_family_title">Власне сімейство шрифтів для заголовку</string>
<string name="settings_custom_content_font_family_title">Власне сімейство шрифтів для вмісту</string>
<string name="settings_fixed_height_preview_in_card_title">Фіксована висота карток</string>
<string name="settings_hide_text_post_content">Ховати текст вмісту дописів</string>
<string name="settings_hide_comment_awards_title">Ховати нагороди коментарів</string>
<string name="settings_show_fewer_toolbar_options_threshold_title">Показувати менше параметрів панелі засобів починаючи з</string>
<string name="settings_show_fewer_toolbar_options_threshold_title">Показувати менше параметрів панелі засобів, починаючи з</string>
<string name="settings_show_fewer_toolbar_options_threshold_summary">Рівень %1$d</string>
<string name="settings_show_author_avatar_title">Показувати аватарку автора</string>
<string name="settings_reddit_user_agreement_title">Угода користувача Reddit</string>
<string name="settings_always_show_child_comment_count_title">Завжди показувати кількість дитячих коментарів</string>
<string name="settings_hide_upvote_ratio_title">Ховати голоси вверх</string>
<string name="settings_reddit_user_agreement_title">Угода користувача Lemmy</string>
<string name="settings_always_show_child_comment_count_title">Завжди показувати кількість дочірніх коментарів</string>
<string name="settings_hide_upvote_ratio_title">Ховати голоси вгору</string>
<string name="settings_miscellaneous_dangerous_group_title">Небезпечно</string>
<string name="settings_post_feed_max_resolution_warning_title">Збільшувати значення для показу огляду у вищій роздільності, але програма може неочікувано дати збій.</string>
<string name="settings_post_feed_max_resolution_title">Найбільша роздільність огляду стрічки дописів (ширина * висоту)</string>
<string name="settings_reddit_video_default_resolution">Типова роздільність відео Reddit</string>
<string name="settings_post_feed_max_resolution_warning_title">Збільшити роздільність попереднього перегляду дописів, але програма може неочікувано дати збій.</string>
<string name="settings_post_feed_max_resolution_title">Найбільша роздільність попереднього перегляду дописів (ширина × висота)</string>
<string name="settings_reddit_video_default_resolution">Типова роздільність відео Lemmy</string>
<string name="select_a_ttf_font">Виберіть файл шрифту ttf</string>
<string name="unable_to_get_font_file">Не вдалося отримати Ваш шрифт</string>
<string name="unable_to_load_font">Не вдалося завантажити власний шрифт</string>
@@ -1182,9 +1178,97 @@
<string name="option_4_hint">Варіант 4</string>
<string name="option_5_hint">Варіант 5</string>
<string name="option_6_hint">Варіант 6</string>
<string name="not_a_valid_number">Не правильне число</string>
<string name="not_a_valid_number">Неправильне число</string>
<string name="post_karma">Карма за дописи:</string>
<string name="comment_karma">Карма за коментарі:</string>
<string name="awarder_karma">Карма за надання нагород:</string>
<string name="awardee_karma">Карма за отримання нагород:</string>
<string name="comment_count_detail">%1$,d коментарів</string>
<string name="user_2fa_token">Токен 2FA (якщо є)</string>
<string name="history_activity_label">Історія</string>
<string name="action_block_user">Заблокувати користувача</string>
<string name="sort_time_6hours">6 годин</string>
<string name="send_report">Надіслати скаргу</string>
<string name="invalid_username_or_password">Неправильне ім\'я користувача або пароль</string>
<string name="image_index_in_gallery">%1$d/%2$d</string>
<string name="settings_hide_fab_in_post_feed">Ховати плаваючу кнопку дії в стрічці дописів</string>
<string name="go_to_settings">Налаштування</string>
<string name="mark_post_as_read_failed">Не вдалося позначати допис прочитаним</string>
<string name="password_cannot_be_empty">Пароль не може бути порожнім.</string>
<string name="settings_comment_divider_type">Роздільник коментарів</string>
<string name="url_cannot_be_null_or_empty">URL не може бути порожнім</string>
<string name="storage_permission_denied">Дозвіл на доступ до сховища відхилено</string>
<string name="error_unsupported_video">Медіа містить відеодоріжку, проте її неможливо відтворити на цьому пристрої</string>
<string name="unblock_community">Розблокувати спільноту</string>
<string name="block_community_failed">Не вдалося заблокувати спільноту</string>
<string name="block_community_success">Спільноту заблоковано!</string>
<string name="unblock_community_failed">Не вдалося розблокувати спільноту</string>
<string name="unblock_community_success">Спільноту розблоковано!</string>
<string name="unblock_user_success">Розблоковано</string>
<string name="action_unblock_user">Розблокувати користувача</string>
<string name="action_create_github_issue">Створити задачу на Codeberg</string>
<string name="action_more_options">Більше налаштувань</string>
<string name="history">Історія</string>
<string name="anonymous_homepage_not_implemented">Анонімну домашню сторінку ще не реалізовано</string>
<string name="user_username">Ім\'я користувача</string>
<string name="upload_image">Завантажити зображення</string>
<string name="settings_hide_community_and_user_instance">Ховати спільноту і сервер користувача</string>
<string name="settings_show_display_name_instead_of_user_name">Показувати спільноту і відображувані імена користувачів</string>
<string name="active_users_number_detail">%1$,d активних користувачів</string>
<string name="post_count_detail">%1$,d дописів</string>
<string name="invalid_response">Неправильна відповідь від сервера</string>
<string name="settings_navigation_drawer_enable_hide_karma_title">Сховати карму обліківки</string>
<string name="settings_backup_settings_summary">Пароль для файлу резервної копії — 123321.</string>
<string name="settings_easier_to_watch_in_full_screen_title">Простіше переглядати в повноекранному режимі</string>
<string name="block_user">Заблокувати користувача</string>
<string name="block_user_success">Заблоковано</string>
<string name="block_user_failed">Не вдалося заблокувати користувача</string>
<string name="edited_time">Змінено о %s</string>
<string name="edited">Змінено</string>
<string name="clear_user_flair">Очистити личку</string>
<string name="clear_user_flair_success">Личку користувача очищено</string>
<string name="extra_small">Дуже малий</string>
<string name="error_unsupported_audio">Медіа містить звукову доріжку, проте її неможливо відтворити на цьому пристрої</string>
<string name="invalid_link">Неправильна ланка</string>
<string name="i_understand">Зрозуміло</string>
<string name="user_password">Пароль</string>
<string name="sort_time_12hours">12 годин</string>
<string name="sort_time_3months">3 місяці</string>
<string name="sort_time_6months">6 місяців</string>
<string name="sort_time_9months">9 місяців</string>
<string name="report_post">Поскаржитися на допис</string>
<string name="unblock_user_failed">Не вдалося розблокувати користувача</string>
<string name="blocked_users">Заблоковані користувачі</string>
<string name="replies">Відповіді</string>
<string name="no_more_posts">Більше немає дописів</string>
<string name="not_implemented">Функцію ще не реалізовано :(</string>
<string name="use_circular_fab">Кругла плаваюча кнопка дії</string>
<string name="user_login">Вхід</string>
<string name="load_more_posts_failed">Не вдалося завантажити більше дописів.
\nНатисніть, щоб повторити.</string>
<string name="blocks">Заблоковане</string>
<string name="blocked_communities">Заблоковані спільноти</string>
<string name="username_cannot_be_empty">Ім\'я користувача не може бути порожнім.</string>
<string name="instance_cannot_be_empty">Сервер не може бути порожнім.</string>
<string name="block_community">Заблокувати спільноту
\n</string>
<string name="mentions">Згадки</string>
<string name="invalid_regex">Неправильний регулярний вираз</string>
<string name="denied_notification_permission">Дозволу на сповіщення не надано</string>
<string name="exo_controls_volume_up_description">Гучніше</string>
<string name="exo_controls_volume_off_description">Без звуку</string>
<string name="could_not_resolve_link">Не вдалося визначити URL :(</string>
<string name="reddit_api_info_title">Важливе повідомлення щодо змін у Reddit API</string>
<string name="separate_down_and_up_votes">Розділяти голоси вгору і вниз</string>
<string name="settings_show_statistics">Показувати статистику</string>
<string name="settings_category_community_and_user_pages_title">Сторінки спільнот і користувачів</string>
<string name="settings_show_post_and_comment_score">Показувати оцінки дописів і коментарів</string>
<string name="instance_info">Про сервер</string>
<string name="instance_url">URL сервера</string>
<string name="anonymous_account_instance">Сервер анонімної обліківки</string>
<string name="instance_url_hint">URL вибраного Вами сервера Lemmy (з https:// або без нього)</string>
<string name="moderators">Модератори</string>
<string name="enable_random_adaptation">Увімкнути випадкову адаптацію</string>
<string name="handle_link">Обробка посилань</string>
<string name="sample_list_load_error">Не вдалося завантажити один або кілька списків зразків</string>
</resources>

View File

@@ -380,7 +380,7 @@
<string name="settings_reddit_account_title">Tài khoản Reddit</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">Subreddit</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Chia sẻ</string>
<string name="settings_share_summary">Hãy chia sẻ ứng dụng này với người khác nếu bạn thích nó</string>
<string name="settings_version_title">Infinity cho Reddit</string>

View File

@@ -382,7 +382,7 @@
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="settings_community_title">版块</string>
<!-- 这个应该不做翻译为好它是指示infinity社区位置的。在关于界面 -->
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">分享</string>
<string name="settings_share_summary">如果您喜欢此应用,可以分享给其他人</string>
<string name="settings_version_title">Infinity For Reddit</string>

View File

@@ -1,5 +1,5 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="application_name" translatable="false">Infinity for Lemmy</string>
<string name="application_name" translatable="false">Eternity</string>
<string name="login_activity_label">Login</string>
<string name="search_activity_label" translatable="false"> </string>
<string name="comment_activity_label">Send Comment</string>
@@ -150,6 +150,8 @@
<string name="active_users_number_detail">%1$,d Active Users</string>
<string name="post_count_detail">%1$,d Posts</string>
<string name="comment_count_detail">%1$,d Comments</string>
<string name="user_number_detail">%1$,d Users</string>
<string name="community_number_detail">%1$,d Communities</string>
<string name="online_subscribers_number_detail">Online: %1$,d</string>
<string name="cannot_fetch_community_info">Cannot fetch community info</string>
<string name="cannot_fetch_user_info">Cannot fetch user info</string>
@@ -479,11 +481,11 @@
<string name="settings_reddit_account_title">Lemmy Account</string>
<string name="settings_reddit_account_summary">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="settings_community_title">Community</string>
<string name="settings_community_summary">!infinityforlemmy@lemdro.id</string>
<string name="settings_community_summary">!eternityapp@lemdro.id</string>
<string name="settings_share_title">Share</string>
<string name="settings_share_summary">Share this app to other people if you enjoy it</string>
<string name="settings_privacy_policy_title">Privacy Policy</string>
<string name="settings_version_title">Infinity For Lemmy</string>
<string name="settings_version_title">Eternity</string>
<string name="settings_version_summary">Version %s</string>
<string name="settings_category_customization_title">Customization</string>
<string name="settings_customize_light_theme_title">Light Theme</string>
@@ -707,7 +709,7 @@
<string name="error_loading_multi_reddit_list">Cannot sync multicommunities</string>
<string name="error_loading_subscriptions">Cannot sync subscriptions</string>
<string name="share_this_app">Check out Infinity for Lemmy, an awesome Lemmy client!\nhttps://play.google.com/store/apps/details?id=eu.toldi.infinityforlemmy</string>
<string name="share_this_app">Check out Eternity, an awesome Lemmy client!\nhttps://play.google.com/store/apps/details?id=eu.toldi.infinityforlemmy</string>
<string name="error_getting_community_name">Error getting community name</string>
@@ -948,6 +950,9 @@
<string name="theme_name_red_amoled">Red Amoled</string>
<string name="theme_name_dracula">Dracula</string>
<string name="theme_name_calm_pastel">Calm Pastel</string>
<string name="theme_name_dayfox">Dayfox</string>
<string name="theme_name_nightfox">Nightfox</string>
<string name="theme_name_carbonfox">Carbonfox</string>
<string name="create_light_theme">Create a Light Theme\nBase on Indigo Theme</string>
<string name="create_dark_theme">Create a Dark Theme\nBase on Indigo Dark Theme</string>
<string name="create_amoled_theme">Create an Amoled Theme\nBase on Indigo Amoled Theme</string>
@@ -984,7 +989,7 @@
<string name="reset_all_settings_success">Reset all settings successfully</string>
<string name="username_preview">\@bazsalanszky@lemmy.toldi.eu</string>
<string name="community_preview">!infinityforlemmy@lemdro.id</string>
<string name="community_preview">!eternityapp@lemdro.id</string>
<string name="primary_text_preview">Primary Text</string>
<string name="secondary_text_preview">Secondary Text</string>
<string name="post_title_preview">This is a post</string>
@@ -1372,4 +1377,10 @@
<string name="settings_show_display_name_instead_of_user_name">Show community and user display names</string>
<string name="report_post">Report Post</string>
<string name="send_report">Send Report</string>
<string name="settings_category_community_and_user_pages_title">Community and User pages</string>
<string name="settings_show_statistics">Show Statistics</string>
<string name="settings_show_post_and_comment_score">Show post and comment scores</string>
<string name="moderators">Moderators</string>
<string name="admins">Admins</string>
<string name="settings_hide_user_instance">Hide user instance</string>
</resources>

View File

@@ -61,6 +61,16 @@
app:key="comment_separate_down_and_up_votes"
app:title="@string/separate_down_and_up_votes" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="false"
app:key="comment_hide_user_instance"
app:title="@string/settings_hide_user_instance" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="true"
app:key="comment_display_name_instead_of_user_name"
app:title="@string/settings_show_display_name_instead_of_user_name" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSeekBarPreference
app:defaultValue="5"
android:max="10"

View File

@@ -86,4 +86,16 @@
app:key="show_absolute_number_of_votes"
app:title="@string/settings_show_absolute_number_of_votes_title" />
<eu.toldi.infinityforlemmy.customviews.CustomFontPreferenceCategory app:title="@string/settings_category_community_and_user_pages_title" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="true"
app:key="show_statistics"
app:title="@string/settings_show_statistics" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="true"
app:key="show_score"
app:title="@string/settings_show_post_and_comment_score" />
</PreferenceScreen>

View File

@@ -1,3 +1,3 @@
<resources>
<string name="application_name" translatable="false">Infinity for Lemmy (Nightly)</string>
<string name="application_name" translatable="false">Eternity (Nightly)</string>
</resources>

View File

@@ -1,4 +1,4 @@
<h1>Infinity for Lemmy</h1>
<h1>Eternity</h1>
<p>A client for Lemmy, specifically designed for Android and written in Java. This project is a fork of the Infinity for Reddit project, and it is currently in the early stages of development. As such, expect many unfinished features and potential bugs!</p>
<h2>Development Progress</h2>

View File

@@ -1 +1 @@
Infinity for Lemmy
Eternity