Compare commits

...

19 Commits

Author SHA1 Message Date
Bazsalanszky
279820c1be Remove award and flair related settings
These do not work on Lemmy. We do not need them.
2023-08-05 16:27:58 +02:00
Bazsalanszky
1d7031f3d4 Fix issues related to image loading
Resolved some issues related to loading icons of users on community pages
2023-08-05 16:20:33 +02:00
Bazsalanszky
252e00b67a Fix issue related to loading community data
In some cases loading the creation date of the community made the app crash. Now it has been resolved.
2023-08-05 16:19:37 +02:00
Bazsalanszky
a8d63c7480 Fix loading community and user images
This commit resolves two issues:
1. Loading community icons on the homepage sometimes showed the wrong community icon
2. Loading user avatars failed before when tried them in the comments
2023-08-05 16:01:28 +02:00
Bazsalanszky
2020172b56 Unsave comment fix
Resolve issue where unsaving the app crashes the app.

Closes #55
2023-08-05 14:41:31 +02:00
Bazsalanszky
2d55a4c8ec Fix issue with NSFW Communites
This commit resolves the issue where posts from NSFW communities appeared on the Home page, but not when opening the community it self.

Closes #49
2023-08-05 14:32:15 +02:00
Bazsalanszky
20a3e0220b Fix CrashReportsFragment url
Now uses the our repo instead of the upstream one!
2023-08-05 14:21:44 +02:00
Bazsalanszky
feeeefa2d2 Possible fix to loading videos on home page 2023-08-05 14:21:08 +02:00
Bazsalanszky
d25137020f Bug report template 2023-08-05 14:19:23 +02:00
Bazsalanszky
3c4fb4162e Merge remote-tracking branch 'origin/master' 2023-08-05 14:17:27 +02:00
Bazsalanszky
28e9ae950e Bug report issue template 2023-08-05 14:16:22 +02:00
Bazsalanszky
888e741aa9 Parse video posts
Parse post with direct links to videos as Video type posts. Autoplay also works with these.
2023-08-05 13:57:07 +02:00
Bazsalanszky
9f7a6e1738 Merge pull request 'I replaced the empty community icon with one that uses a lemmy-like icon instead' (#57) from carrotcake/Infinity-For-Lemmy:new-picture into master
Reviewed-on: https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy/pulls/57
2023-08-05 11:34:53 +00:00
Bazsalanszky
76f4a0738f Merge pull request 'Update locale-pt' (#53) from American_Jesus/Infinity-For-Lemmy:locale-pt into master
Reviewed-on: https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy/pulls/53
2023-08-05 11:33:16 +00:00
carrotcake
63327946be I replaced the empty community icon with one that uses a lemmy-like icon instead 2023-08-04 22:58:56 -04:00
Generator
cf15732a39 fix string 2023-08-04 15:38:14 +01:00
Generator
2eee73753f change Popular to Local 2023-08-04 15:33:37 +01:00
Generator
62d097357a fix strings and typos 2023-08-04 15:29:41 +01:00
Generator
18af76ce92 update locale pt 2023-08-04 15:13:11 +01:00
19 changed files with 147 additions and 95 deletions

View File

@ -0,0 +1,49 @@
---
name: "Bug Report"
about: "Report a Bug!"
title: " [Bug] "
ref: "master"
labels:
- Kind/Bug
---
### Description of the Issue:
<!-- Provide a clear and concise description of what the issue is about. -->
### Steps to Reproduce:
<!-- Explain the steps to reproduce the issue, if applicable. -->
1.
2.
3.
### Expected Behavior:
<!-- Describe what you expected to happen. -->
### Actual Behavior:
<!-- Describe what actually happened. Include screenshots if applicable. -->
### App Information:
- **Version:** <!-- e.g. 1.0.0 -->
- **Device:** <!-- e.g. Samsung Galaxy S10 -->
- **Android Version:** <!-- e.g. Android 11 -->
- **Installation Source:** <!-- e.g. Google Play Store, APK -->
### Log Files:
<!-- If applicable, include log files or error messages related to this issue. -->
### Additional Context:
<!-- Add any other context about the problem here, such as relevant system configuration or screenshots. -->
### Potential Solutions or Workarounds:
<!-- If you know of any potential solutions or workarounds for this issue, please describe them here. -->

View File

@ -392,12 +392,12 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
if (comment.getAuthorIconUrl() == null) {
mFragment.loadIcon(comment.getAuthorQualifiedName(), (authorName, iconUrl) -> {
if (authorName.equals(comment.getAuthor())) {
if (authorName.equals(comment.getAuthorQualifiedName())) {
comment.setAuthorIconUrl(iconUrl);
}
Comment currentComment = getCurrentComment(holder);
if (currentComment != null && authorName.equals(currentComment.getAuthor())) {
if (currentComment != null && authorName.equals(currentComment.getAuthorQualifiedName())) {
mGlide.load(iconUrl)
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
.error(mGlide.load(R.drawable.subreddit_default_icon)
@ -537,12 +537,12 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
if (comment.getAuthorIconUrl() == null) {
mFragment.loadIcon(comment.getAuthorQualifiedName(), (authorName, iconUrl) -> {
if (authorName.equals(comment.getAuthor())) {
if (authorName.equals(comment.getAuthorQualifiedName())) {
comment.setAuthorIconUrl(iconUrl);
}
Comment currentComment = getCurrentComment(holder);
if (currentComment != null && authorName.equals(currentComment.getAuthor())) {
if (currentComment != null && authorName.equals(currentComment.getAuthorQualifiedName())) {
mGlide.load(iconUrl)
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
.error(mGlide.load(R.drawable.subreddit_default_icon)
@ -1548,7 +1548,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
SaveComment saveComment = new SaveComment();
if (comment.isSaved()) {
comment.setSaved(false);
saveComment.unsaveThing(mOauthRetrofit, mAccessToken, comment.getId(), new SaveThing.SaveThingListener() {
saveComment.unsaveThing(mRetrofit, mAccessToken, comment.getId(), new SaveThing.SaveThingListener() {
@Override
public void success() {
comment.setSaved(false);

View File

@ -98,6 +98,7 @@ import eu.toldi.infinityforlemmy.markdown.MarkdownUtils;
import eu.toldi.infinityforlemmy.post.Post;
import eu.toldi.infinityforlemmy.post.PostPagingSource;
import eu.toldi.infinityforlemmy.utils.APIUtils;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import eu.toldi.infinityforlemmy.videoautoplay.CacheManager;
@ -438,7 +439,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
}
return new PostDetailVideoAutoplayViewHolder(LayoutInflater.from(parent.getContext()).inflate(mLegacyAutoplayVideoControllerUI ? R.layout.item_post_detail_video_autoplay_legacy_controller : R.layout.item_post_detail_video_autoplay, parent, false));
case VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW:
if (mDataSavingMode && (mDisableImagePreview || mOnlyDisablePreviewInVideoAndGifPosts)) {
if (mDataSavingMode && (mDisableImagePreview || mOnlyDisablePreviewInVideoAndGifPosts) || mPost.getPreviews().isEmpty()) {
return new PostDetailNoPreviewViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_no_preview, parent, false));
}
return new PostDetailVideoAndGifPreviewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_video_and_gif_preview, parent, false));
@ -475,8 +476,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
((PostDetailBaseViewHolder) holder).mTitleTextView.setText(mPost.getTitle());
if (mPost.getSubredditNamePrefixed().startsWith("u/")) {
if (mPost.getAuthorIconUrl() == null) {
String authorName = mPost.isAuthorDeleted() ? mPost.getSubredditNamePrefixed().substring(2) : mPost.getAuthor();
LoadUserData.loadUserData(mExecutor, new Handler(), mRedditDataRoomDatabase, authorName, mOauthRetrofit, iconImageUrl -> {
LoadUserData.loadUserData(mExecutor, new Handler(), mRedditDataRoomDatabase,mPost.getAuthorNamePrefixed(), mOauthRetrofit, iconImageUrl -> {
if (mActivity != null && getItemCount() > 0) {
if (iconImageUrl == null || iconImageUrl.equals("")) {
mGlide.load(R.drawable.subreddit_default_icon)
@ -1765,8 +1765,8 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
} else {
intent.setData(Uri.parse(mPost.getVideoUrl()));
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_DIRECT);
}
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, mPost.getTitle());
if (helper != null) {
@ -2038,8 +2038,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, mPost.getStreamableShortCode());
} else {
intent.setData(Uri.parse(mPost.getVideoUrl()));
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_DIRECT);
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
}
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, mPost.getTitle());
@ -2377,7 +2376,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, mPost.getStreamableShortCode());
} else {
intent.setData(Uri.parse(mPost.getVideoUrl()));
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, mPost.getSubredditName());
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_DIRECT);
intent.putExtra(ViewVideoActivity.EXTRA_ID, mPost.getId());
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, mPost.getVideoDownloadUrl());
}

View File

@ -542,7 +542,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
if (mDisplaySubredditName) {
if (authorPrefixed.equals(post.getSubredditNamePrefixed())) {
if (post.getAuthorIconUrl() == null) {
mFragment.loadIcon(post.getAuthor(), false, (subredditOrUserName, iconUrl) -> {
mFragment.loadIcon(post.getAuthorNamePrefixed(), false, (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0 && post.getAuthor().equals(subredditOrUserName)) {
if (iconUrl == null || iconUrl.equals("")) {
mGlide.load(R.drawable.subreddit_default_icon)
@ -574,7 +574,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
}
} else {
if (post.getSubredditIconUrl() == null) {
mFragment.loadIcon(post.getSubredditName(), true, (subredditOrUserName, iconUrl) -> {
mFragment.loadIcon(post.getSubredditNamePrefixed(), true, (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0 && post.getSubredditName().equals(subredditOrUserName)) {
if (iconUrl == null || iconUrl.equals("")) {
mGlide.load(R.drawable.subreddit_default_icon)
@ -608,7 +608,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
} else {
if (post.getAuthorIconUrl() == null) {
String authorName = post.isAuthorDeleted() ? post.getSubredditName() : post.getAuthor();
mFragment.loadIcon(authorName, post.isAuthorDeleted(), (subredditOrUserName, iconUrl) -> {
mFragment.loadIcon(post.getSubredditNamePrefixed(), post.isAuthorDeleted(), (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0) {
if (iconUrl == null || iconUrl.equals("") && authorName.equals(subredditOrUserName)) {
mGlide.load(R.drawable.subreddit_default_icon)
@ -913,15 +913,15 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
int width = resource.getIntrinsicWidth();
int height = resource.getIntrinsicHeight();
((PostVideoAutoplayViewHolder) holder).previewImageView.setImageDrawable(resource);
((PostCard2VideoAutoplayViewHolder) holder).previewImageView.setImageDrawable(resource);
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) height / width);
((PostVideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
((PostCard2VideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) height / width);
((PostCard2VideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
preview.setPreviewHeight(height);
preview.setPreviewWidth(width);
} else {
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
((PostVideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
((PostCard2VideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
((PostCard2VideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
}
}
@ -1109,8 +1109,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
if (mDisplaySubredditName) {
if (authorPrefixed.equals(subredditNamePrefixed)) {
if (post.getAuthorIconUrl() == null) {
mFragment.loadIcon(post.getAuthor(), false, (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0 && post.getAuthor().equals(subredditOrUserName)) {
mFragment.loadIcon(post.getAuthorNamePrefixed(), false, (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0 && post.getAuthorNamePrefixed().equals(subredditOrUserName)) {
if (iconUrl == null || iconUrl.equals("")) {
mGlide.load(R.drawable.subreddit_default_icon)
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
@ -1141,7 +1141,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
}
} else {
if (post.getSubredditIconUrl() == null) {
mFragment.loadIcon(subredditName, true, (subredditOrUserName, iconUrl) -> {
mFragment.loadIcon(subredditNamePrefixed, true, (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0 && subredditName.equals(subredditOrUserName)) {
if (iconUrl == null || iconUrl.equals("")) {
mGlide.load(R.drawable.subreddit_default_icon)
@ -1181,8 +1181,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
}
} else {
if (post.getAuthorIconUrl() == null) {
String authorName = post.getSubredditName();
mFragment.loadIcon(authorName, post.isAuthorDeleted(), (subredditOrUserName, iconUrl) -> {
String authorName = post.getAuthorNamePrefixed();
mFragment.loadIcon(post.getAuthorNamePrefixed(), false, (subredditOrUserName, iconUrl) -> {
if (mActivity != null && getItemCount() > 0 && authorName.equals(subredditOrUserName)) {
if (iconUrl == null || iconUrl.equals("")) {
mGlide.load(R.drawable.subreddit_default_icon)
@ -2249,8 +2249,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
intent.putExtra(ViewVideoActivity.EXTRA_STREAMABLE_SHORT_CODE, post.getStreamableShortCode());
} else {
intent.setData(Uri.parse(post.getVideoUrl()));
intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, post.getSubredditName());
intent.putExtra(ViewVideoActivity.EXTRA_ID, post.getId());
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_TYPE, ViewVideoActivity.VIDEO_TYPE_DIRECT);
intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
}
intent.putExtra(ViewVideoActivity.EXTRA_POST_TITLE, post.getTitle());

View File

@ -9,6 +9,7 @@ import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.subreddit.FetchSubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditDao;
import eu.toldi.infinityforlemmy.subreddit.SubredditData;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import retrofit2.Retrofit;
public class LoadSubredditIcon {
@ -18,9 +19,9 @@ public class LoadSubredditIcon {
LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener) {
executor.execute(() -> {
SubredditDao subredditDao = redditDataRoomDatabase.subredditDao();
SubredditData subredditData = subredditDao.getSubredditData(subredditName);
SubredditData subredditData = subredditDao.getSubredditDataByActorId(LemmyUtils.qualifiedCommunityName2ActorId(subredditName));
if (subredditData != null) {
String iconImageUrl = subredditDao.getSubredditData(subredditName).getIconUrl();
String iconImageUrl = subredditDao.getSubredditDataByActorId(LemmyUtils.qualifiedCommunityName2ActorId(subredditName)).getIconUrl();
handler.post(() -> loadSubredditIconAsyncTaskListener.loadIconSuccess(iconImageUrl));
} else {
handler.post(() -> FetchSubredditData.fetchSubredditData(retrofit, subredditName, accessToken, new FetchSubredditData.FetchSubredditDataListener() {

View File

@ -8,6 +8,7 @@ import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.user.FetchUserData;
import eu.toldi.infinityforlemmy.user.UserDao;
import eu.toldi.infinityforlemmy.user.UserData;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import retrofit2.Retrofit;
public class LoadUserData {
@ -16,8 +17,9 @@ public class LoadUserData {
Retrofit retrofit, LoadUserDataAsyncTaskListener loadUserDataAsyncTaskListener) {
executor.execute(() -> {
UserDao userDao = redditDataRoomDatabase.userDao();
if (userDao.getUserData(userName) != null) {
String iconImageUrl = userDao.getUserData(userName).getIconUrl();
UserData userData= userDao.getUserDataByActorId(LemmyUtils.qualifiedUserName2ActorId(userName));
if (userData != null) {
String iconImageUrl = userData.getIconUrl();
handler.post(() -> loadUserDataAsyncTaskListener.loadUserDataSuccess(iconImageUrl));
} else {
handler.post(() -> FetchUserData.fetchUserData(retrofit, userName, new FetchUserData.FetchUserDataListener() {

View File

@ -285,6 +285,12 @@ public class ParseComment {
String author = creatorObj.getString("name");
String authorQualifiedName = LemmyUtils.actorID2FullName(creatorObj.getString("actor_id"));
String linkAuthor = creatorObj.getString("actor_id");
String authorAvatar = null;
if(creatorObj.has("avatar")){
authorAvatar = creatorObj.getString("avatar");
}
long commentTimeMillis = 0;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
commentTimeMillis = ZonedDateTime.parse(commentObj.getString("published"),
@ -335,6 +341,7 @@ public class ParseComment {
score, 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);
return comment;
}

View File

@ -137,6 +137,7 @@ import eu.toldi.infinityforlemmy.post.PostPagingSource;
import eu.toldi.infinityforlemmy.post.PostViewModel;
import eu.toldi.infinityforlemmy.postfilter.PostFilter;
import eu.toldi.infinityforlemmy.postfilter.PostFilterUsage;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import eu.toldi.infinityforlemmy.videoautoplay.ExoCreator;

View File

@ -114,6 +114,7 @@ import eu.toldi.infinityforlemmy.readpost.InsertReadPost;
import eu.toldi.infinityforlemmy.subreddit.FetchSubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditData;
import eu.toldi.infinityforlemmy.utils.APIUtils;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import eu.toldi.infinityforlemmy.videoautoplay.ExoCreator;

View File

@ -211,10 +211,13 @@ public class ParsePost {
String distinguished, String suggestedSort) throws JSONException {
Post post;
boolean isVideo = false;
String url = (!data.getJSONObject("post").isNull("url")) ? data.getJSONObject("post").getString("url") : "";
String communityURL = (!data.getJSONObject("community").isNull("icon")) ? data.getJSONObject("community").getString("icon") : "";
Uri uri = Uri.parse(url);
String path = uri.getPath();
boolean isVideo = path.endsWith(".mp4") || path.endsWith(".webm") || path.endsWith(".gifv");
if (!data.getJSONObject("post").has("thumbnail_url") && previews.isEmpty()) {
if (!data.getJSONObject("post").isNull("body") && url.equals("")) {
@ -244,16 +247,13 @@ public class ParsePost {
} else {
if (isVideo) {
//No preview video post
JSONObject redditVideoObject = data.getJSONObject(JSONUtils.MEDIA_KEY).getJSONObject(JSONUtils.REDDIT_VIDEO_KEY);
int postType = Post.VIDEO_TYPE;
String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.HLS_URL_KEY)).toString();
String videoDownloadUrl = redditVideoObject.getString(JSONUtils.FALLBACK_URL_KEY);
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, authorFull, postTimeMillis, title, permalink, score, postType, voteType,
nComments, upvoteRatio, nsfw, locked, saved, distinguished, suggestedSort);
post.setVideoUrl(videoUrl);
post.setVideoDownloadUrl(videoDownloadUrl);
post.setVideoUrl(url);
post.setVideoDownloadUrl(url);
} else if (!url.equals("")) {
//No preview link post
int postType = Post.NO_PREVIEW_LINK_TYPE;
@ -662,6 +662,7 @@ public class ParsePost {
post.setSelfTextPlain(body);
post.setSelfTextPlainTrimmed(body.trim());
}
post.setSubredditIconUrl(communityURL);
return post;
}

View File

@ -251,7 +251,7 @@ public class PostPagingSource extends ListenableFuturePagingSource<Integer, Post
private ListenableFuture<LoadResult<Integer, Post>> loadSubredditPosts(@NonNull LoadParams<Integer> loadParams, LemmyAPI api) {
ListenableFuture<Response<String>> subredditPost;
subredditPost = api.getPosts(null,sortType.getType().value,loadParams.getKey(),25,null,subredditOrUserName,false,null);
subredditPost = api.getPosts(null,sortType.getType().value,loadParams.getKey(),25,null,subredditOrUserName,false,accessToken);
ListenableFuture<LoadResult<Integer, Post>> pageFuture = Futures.transform(subredditPost, this::transformData, executor);

View File

@ -105,7 +105,7 @@ public class CrashReportsFragment extends Fragment {
} catch (UnsupportedEncodingException e) {
return false;
}
Uri githubIssueUri = Uri.parse(String.format("https://github.com/Docile-Alligator/Infinity-For-Reddit/issues/new?labels=possible-bug&device=%s&version=%s&android_version=%s&logs=%s&&template=BUG_REPORT.yml", model, appVersion, androidVersion, logs));
Uri githubIssueUri = Uri.parse(String.format("https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy/issues/new?template=.gitea%2fissue_template%2fbug_report.md", model, appVersion, androidVersion, logs));
intent.setData(githubIssueUri);
startActivity(intent);
return true;

View File

@ -182,13 +182,13 @@ public class ParseSubredditData {
public static String formatISOTime(String isoTime) {
// Truncate the time to millisecond precision
String truncatedTime = isoTime.substring(0, 23);
//String truncatedTime = isoTime.substring(0, 23);
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US);
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
Date date = isoFormat.parse(truncatedTime);
Date date = isoFormat.parse(isoTime);
// Set your desired output format here
SimpleDateFormat outputFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss", Locale.US);

View File

@ -22,4 +22,7 @@ public interface SubredditDao {
@Query("SELECT * from subreddits WHERE name = :namePrefixed COLLATE NOCASE LIMIT 1")
SubredditData getSubredditData(String namePrefixed);
@Query("SELECT * from subreddits WHERE actor_id = :actorId COLLATE NOCASE LIMIT 1")
SubredditData getSubredditDataByActorId(String actorId);
}

View File

@ -25,4 +25,7 @@ public interface UserDao {
@Query("SELECT * FROM users WHERE name = :userName COLLATE NOCASE LIMIT 1")
UserData getUserData(String userName);
@Query("SELECT * FROM users WHERE actor_id = :actorId COLLATE NOCASE LIMIT 1")
UserData getUserDataByActorId(String actorId);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -15,13 +15,13 @@
<string name="view_message_activity_label">"Caixa de Entrada"</string>
<string name="settings_activity_label">"Definições"</string>
<string name="account_saved_thing_activity_label">"Guardado"</string>
<string name="create_multi_reddit_activity_label">"Criar Multireddit"</string>
<string name="create_multi_reddit_activity_label">"Criar Multicomunidade"</string>
<string name="community_multiselection_activity_label">"Selecionar Comunidades"</string>
<string name="custom_theme_listing_activity_label">"Temas Personalizados"</string>
<string name="customize_theme_activity_label">"Personalizar Tema"</string>
<string name="customize_theme_activity_create_theme_label">"Criar Tema"</string>
<string name="theme_preview_activity_label">"Pré-visualizar Tema"</string>
<string name="edit_multi_reddit_activity_label">"Editar Multireddit"</string>
<string name="edit_multi_reddit_activity_label">"Editar Multicomunidade"</string>
<string name="selected_subeddits_activity_label">"Comunidades selecionadas"</string>
<string name="report_activity_label">"Denunciar"</string>
<string name="view_imgur_media_activity_image_label">"Imagem %1$d/%2$d"</string>
@ -53,8 +53,8 @@
<string name="action_edit_flair">"Editar Flair"</string>
<string name="action_change_post_layout">"Alterar Visualização de Publicações"</string>
<string name="action_save">"Guardar"</string>
<string name="action_edit_multi_reddit">"Editar MultiReddit"</string>
<string name="action_delete_multi_reddit">"Eliminar MultiReddit"</string>
<string name="action_edit_multi_reddit">"Editar MultiComunidade"</string>
<string name="action_delete_multi_reddit">"Eliminar MultiComunidade"</string>
<string name="action_share">"Partilhar"</string>
<string name="action_preview">"Pré-visualizar"</string>
<string name="action_report">"Denunciar"</string>
@ -81,7 +81,7 @@ Toque para tentar novamente."</string>
<string name="no_comments">"Sem comentários encontrados"</string>
<string name="no_communities">"Nenhuma comunidade encontrada"</string>
<string name="no_users">"Nenhum utilizador encontrado"</string>
<string name="no_multi_reddits">"Nenhum Multireddit encontrado"</string>
<string name="no_multi_reddits">"Nenhuma Multicomunidade encontrada"</string>
<string name="no_storage_permission">"Sem permissão de armazenamento para guardar este ficheiro"</string>
<string name="load_comments_failed">"Erro ao carregar comentários.
Toque para tentar novamente."</string>
@ -102,7 +102,7 @@ Toque para tentar novamente."</string>
<string name="since">"Desde:"</string>
<string name="profile">"Perfil"</string>
<string name="subscriptions">"Subscrições"</string>
<string name="multi_reddit">"Multi-reddit"</string>
<string name="multi_reddit">"Multi-comunidade"</string>
<string name="inbox">"Caixa de Entrada"</string>
<string name="upvoted">"Voto Positivo"</string>
<string name="downvoted">"Voto Negativo"</string>
@ -115,7 +115,7 @@ Toque para tentar novamente."</string>
<string name="cannot_fetch_community_info">"Não é possível obter informações da comunidade"</string>
<string name="cannot_fetch_user_info">"Não é possível obter informações do utilizador"</string>
<string name="cannot_fetch_sidebar">"Não é possível obter informações da barra lateral"</string>
<string name="cannot_fetch_multireddit">"Não é possível obter informações do multireddit"</string>
<string name="cannot_fetch_multireddit">"Não é possível obter informações da multicomunidade"</string>
<string name="subscribe">"Subscrever"</string>
<string name="unsubscribe">"Cancelar subscrição"</string>
<string name="subscribed">"Subscrito"</string>
@ -385,13 +385,13 @@ Toque para tentar novamente."</string>
<string name="settings_rate_summary">"Dê-me 5 estrelas que ficarei muito contente"</string>
<string name="settings_email_title">"Email"</string>
<string name="settings_email_summary">"docilealligator.app@gmail.com"</string>
<string name="settings_reddit_account_title">"Conta do Reddit"</string>
<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_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 Reddit"</string>
<string name="settings_version_title">"Infinity For Lemmy"</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>
@ -414,7 +414,7 @@ Toque para tentar novamente."</string>
<string name="settings_tab_community_name">"Nome da Comunidade (sem prefixo r/)"</string>
<!-- Fuzzy -->
<string name="settings_tab_multi_reddit_name">"Nome MultiReddit (/utilizador/oseunomedeutilizador/m/oseunomemultireddit)"</string>
<string name="settings_tab_multi_reddit_name">"Nome MultiComunidade (/utilizador/oseunomedeutilizador/m/oseunomemulticomunidade)"</string>
<string name="settings_tab_username">"Nome de Utilizador (sem prefixo u/)"</string>
<string name="no_developer_easter_egg">"Aqui não existem opções de programador"</string>
<string name="no_link_available">"Não foi possível obter a ligação"</string>
@ -452,10 +452,10 @@ Toque para tentar novamente."</string>
<string name="elapsed_time_months_ago">"%1$d Meses"</string>
<string name="elapsed_time_a_year_ago">"1 Ano"</string>
<string name="elapsed_time_years_ago">"%1$d Anos"</string>
<string name="error_getting_multi_reddit_data">"Erro ao obter dados do multireddit"</string>
<string name="error_loading_multi_reddit_list">"Não foi possível sincronizar multireddits"</string>
<string name="error_getting_multi_reddit_data">"Erro ao obter dados da multicomunidade"</string>
<string name="error_loading_multi_reddit_list">"Não foi possível sincronizar multicomunidades"</string>
<string name="error_loading_subscriptions">"Não foi possível sincronizar as subscrições"</string>
<string name="share_this_app">"Check out Infinity for Reddit, an awesome Reddit client!
<string name="share_this_app">"Check out Infinity for Lemmy, an awesome Lemmy client!
https://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>
@ -483,9 +483,9 @@ https://play.google.com/store/apps/details?id=eu.toldi.infinityforlemmy"</string
<string name="multi_reddit_description_hint">"Descrição"</string>
<string name="private_multi_reddit">"Privado"</string>
<string name="no_multi_reddit_name">"Onde está o nome?"</string>
<string name="create_multi_reddit_failed">"Não é possível criar este multireddit"</string>
<string name="duplicate_multi_reddit">"Este multireddit já existe"</string>
<string name="edit_multi_reddit_failed">"Não é possível editar este multireddit"</string>
<string name="create_multi_reddit_failed">"Não é possível criar esta multicomunidade"</string>
<string name="duplicate_multi_reddit">"Esta multicomunidade já existe"</string>
<string name="edit_multi_reddit_failed">"Não é possível editar esta multicomunidade"</string>
<string name="delete_multi_reddit_success">"Eliminado com sucesso"</string>
<string name="delete_multi_reddit_failed">"Falha ao eliminar"</string>
<string name="delete_multi_reddit_dialog_message">"Tem a certeza?"</string>
@ -688,7 +688,7 @@ com base no Tema Indigo Amoled"</string>
<string name="delete_all_front_page_scrolled_positions_success">"Eliminação das posições de deslizamento com sucesso"</string>
<string name="reset_all_settings_success">"Todas as definições repostas com sucesso"</string>
<string name="username_preview">"u/Hostilenemy"</string>
<string name="community_preview">"r/Infinity_For_Reddit"</string>
<string name="community_preview">"c/infinityforlemmy"</string>
<string name="primary_text_preview">"Texto Principal"</string>
<string name="secondary_text_preview">"Texto Secundário"</string>
<string name="post_title_preview">"Isto é uma publicação"</string>
@ -699,8 +699,8 @@ com base no Tema Indigo Amoled"</string>
<string name="author_flair_preview">"Flair do Autor"</string>
<string name="comment_content_preview">"Arranjei um cartão a desejar as \"Melhoras\" à minha namorada.
Ela não está doente nem nada, mas certamente poderá melhorar."</string>
<string name="edit_multi_reddit">"Editar Multireddit"</string>
<string name="delete_multi_reddit">"Eliminar Multireddit"</string>
<string name="edit_multi_reddit">"Editar Multicomunidade"</string>
<string name="delete_multi_reddit">"Eliminar Multicomunidade"</string>
<string name="n_awards">"%1$d Prémios"</string>
<string name="one_award">"1 Prémio"</string>
<string name="report">"Denunciar"</string>
@ -713,7 +713,7 @@ Ela não está doente nem nada, mas certamente poderá melhorar."</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="home">"Início"</string>
<string name="local">"Popular"</string>
<string name="local">"Local"</string>
<string name="notifications">"Notificações"</string>
<string name="messages">"Mensagens"</string>
<string name="message">"Mensagem"</string>
@ -787,7 +787,7 @@ Os separadores poderão perder todo o conteúdo após alternar entre outros. É
<string name="settings_data_saving_mode">"Modo de Poupança de Dados"</string>
<string name="settings_data_saving_mode_info_summary">"No modo de poupança de dados:
Pré-visualização de imagens em baixa resolução.
Vídeos do Reddit em baixa resolução.
Vídeos do Lemmy em baixa resolução.
Reprodução automática de vídeos desativada."</string>
<string name="settings_translation_title">"Tradução"</string>
<string name="settings_translation_summary">"Traduzir esta aplicação no POEditor. Obrigado a todos os colaboradores."</string>
@ -855,10 +855,10 @@ Mensagem: %2$s"</string>
<string name="filtered_posts_activity_subtitle">"Publicações Filtradas"</string>
<string name="post_filter_preference_activity_label">"Filtro de Publicações"</string>
<string name="search_users_result_activity_label">"Utilizadores"</string>
<string name="multireddit_selection_activity_label">"Escolher um Multireddit"</string>
<string name="multireddit_selection_activity_label">"Escolher uma Multicomunidade"</string>
<string name="action_save_to_database">"Guardar na Base de Dados"</string>
<string name="action_read_all_messages">"Ler Todas as Mensagens"</string>
<string name="action_add_to_multireddit">"Adicionar ao Multireddit"</string>
<string name="action_add_to_multireddit">"Adicionar à Multicomunidade"</string>
<string name="search_only_communities_hint">"Pesquisar comunidades"</string>
<string name="search_only_users_hint">"Pesquisar utilizadores"</string>
<string name="post_type_gif">"Gif"</string>
@ -895,7 +895,7 @@ Mensagem: %2$s"</string>
<string name="only_spoiler">"Apenas Spoiler"</string>
<string name="title_excludes_strings_hint">"Título: excluir palavras-chave (palavra1,palavra2)"</string>
<string name="title_excludes_regex_hint">"Título: excluir expressões regulares"</string>
<string name="exclude_communities_hint">"Excluir comunidades (ex.: funny,AskReddit)"</string>
<string name="exclude_communities_hint">"Excluir comunidades (ex.: funny,Asklemmy)"</string>
<string name="exclude_users_hint">"Excluir utilizadores (ex.: Hostilenemy,random)"</string>
<string name="exclude_flairs_hint">"Excluir flairs (ex.: flair1, flair2)"</string>
<string name="contain_flairs_hint">"Contém flairs (ex.: flair1, flair2)"</string>
@ -915,17 +915,17 @@ Mensagem: %2$s"</string>
<string name="post_filter_usage_community_all">"Comunidade"</string>
<string name="post_filter_usage_user">"Utilizador: %1$s"</string>
<string name="post_filter_usage_user_all">"Utilizador"</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">"MultiComunidade: %1$s"</string>
<string name="post_filter_usage_multireddit_all">"MultiComunidade"</string>
<string name="post_filter_usage_search">"Pesquisar"</string>
<string name="community">"Comunidade"</string>
<string name="user">"Utilizador"</string>
<string name="edit_post_filter_name_of_usage_info">"Deixar em branco para aplicar este filtro de publicação a todos os utilizadores / comunidades / multireddit"</string>
<string name="read_all_messages_time_limit">"Está a repetir esta ação com demasiada frequência. Tente novamente mais tarde. Este é o valor limite da API do Reddit."</string>
<string name="edit_post_filter_name_of_usage_info">"Deixar em branco para aplicar este filtro de publicação a todos os utilizadores / comunidades / multilemmy"</string>
<string name="read_all_messages_time_limit">"Está a repetir esta ação com demasiada frequência. Tente novamente mais tarde. Este é o valor limite da API do Lemmy."</string>
<string name="read_all_messages_success">"Todas as mensagens lidas com sucesso"</string>
<string name="read_all_messages_failed">"Não é possível ler todas as mensagens"</string>
<string name="add_community_or_user_to_multireddit_success">"%1$s foi adicionado ao multireddit %2$s"</string>
<string name="add_community_or_user_to_multireddit_failed">"Não é possível adicionar %1$s ao multireddit %2$s"</string>
<string name="add_community_or_user_to_multireddit_success">"%1$s foi adicionado à multicomunidade %2$s"</string>
<string name="add_community_or_user_to_multireddit_failed">"Não é possível adicionar %1$s à multicomunidade %2$s"</string>
<string name="choose_a_user">"Escolher um utilizador"</string>
<string name="settings_click_to_show_media_in_gallery_layout">"Clicar para Mostrar Média na Visualização Galeria"</string>
<string name="settings_hide_post_type">"Esconder Tipo de Publicação"</string>
@ -1013,8 +1013,8 @@ Mensagem: %2$s"</string>
<string name="settings_show_only_one_comment_level_indicator">"Mostrar Apenas Um Indicador do Nível de Comentário"</string>
<string name="save_comment">"Guardar"</string>
<string name="unsave_comment">"Esquecer"</string>
<string name="copy_multi_reddit_path">"Copiar Caminho do Multireddit"</string>
<string name="copy_multi_reddit_path_failed">"Não é possível copiar o caminho do multireddit"</string>
<string name="copy_multi_reddit_path">"Copiar Caminho da Multicomunidade"</string>
<string name="copy_multi_reddit_path_failed">"Não é possível copiar o caminho da multicomunidade"</string>
<string name="crash_reports_deleted">"Os relatórios de erros eliminados"</string>
<string name="disable_nsfw_forever_message">"Uma vez ativo, todo o conteúdo impróprio será desativado permanentemente, quer a definição de conteúdo 18+ esteja ativa ou não. Esta configuração é irreversível e a única maneira de reativar conteúdo 18+ é limpando os dados da aplicação.
@ -1027,7 +1027,7 @@ Ainda deseja ativar esta opção?"</string>
<string name="receive_post_reply_notifications">"Receber notificações de respostas de publicações"</string>
<string name="bottom_sheet_post_gallery">"Galeria"</string>
<string name="posting_gallery">"A Publicar Galeria"</string>
<string name="label_reddit">"Reddit"</string>
<string name="label_reddit">"Lemmy"</string>
<string name="settings_default_link_post_layout">"Disposição predefinida de Publicações de Ligação"</string>
<string name="settings_category_material_you_title">"Material You"</string>
<string name="settings_enable_material_you_warning_summary">"Assegure-se de que não tem temas com nome
@ -1039,9 +1039,9 @@ Caso contrário, altere o nome antes de ativar Material You"</string>
<string name="settings_enable_material_you_summary">"Personalizar Infinity baseado na imagem de fundo"</string>
<string name="settings_apply_material_you_title">"Aplicar Material You"</string>
<string name="settings_apply_material_you_summary">"Em caso do Infinity não alterar o tema"</string>
<string name="settings_more_tabs_show_favorite_multireddits_title">"Mostrar MultiReddit Favorito"</string>
<string name="settings_more_tabs_show_multireddits_title">"Mostrar MultiReddit"</string>
<string name="settings_collapse_reddit_section_title">"Recolher Secção do Reddit"</string>
<string name="settings_more_tabs_show_favorite_multireddits_title">"Mostrar MultiComunidade Favorita"</string>
<string name="settings_more_tabs_show_multireddits_title">"Mostrar MultiComunidade"</string>
<string name="settings_collapse_reddit_section_title">"Recolher Secção do Lemmy"</string>
<string name="settings_video_player_automatic_landscape_orientation">"Alterar para Orientação Paisagem automaticamente no Reprodutor de Vídeo"</string>
<string name="settings_remember_muting_option_in_post_feed">"Lembrar opção sem som no Feed de Publicações"</string>
<string name="link_post_layout_auto">"Auto"</string>
@ -1064,7 +1064,7 @@ Toque para tentar novamente."</string>
<string name="settings_post_details_title">"Detalhes do Post"</string>
<string name="settings_secure_mode_title">"Modo Seguro"</string>
<string name="error_loading_wiki">"Erro a carregar a Wiki"</string>
<string name="no_wiki">"Este subreddit não tem wiki"</string>
<string name="no_wiki">"Esta comunidade não tem wiki"</string>
<string name="material_you_notification_title">"Aplicando Material You"</string>
<string name="action_go_to_wiki">"Ir para a Wiki"</string>
<string name="about">"Sobre"</string>
@ -1074,7 +1074,7 @@ Toque para tentar novamente."</string>
<string name="go_to_top">"Ir para Cima"</string>
<string name="title_contains_regex_hint">"Título: contém regex"</string>
<string name="contain_domains_hint">"Contém domínios"</string>
<string name="anonymous_multireddit_no_community">"Este multireddit não tem nenhum subreddit!"</string>
<string name="anonymous_multireddit_no_community">"Esta multicomunidade não tem nenhuma comunidade!"</string>
<string name="contain_domain">"Contém este domínio"</string>
<string name="app_lock_timeout_immediately">"Imediatamente"</string>
<string name="app_lock_timeout_1_min">"1 minuto"</string>

View File

@ -46,11 +46,6 @@
app:key="show_author_avatar"
android:title="@string/settings_show_author_avatar_title" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="false"
app:key="hide_comment_awards"
android:title="@string/settings_hide_comment_awards_title" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="false"
app:key="always_show_child_comment_count"

View File

@ -27,15 +27,6 @@
app:key="hide_post_type"
app:title="@string/settings_hide_post_type" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="false"
app:key="hide_post_flair"
app:title="@string/settings_hide_post_flair" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="false"
app:key="hide_the_number_of_awards"
app:title="@string/settings_hide_the_number_of_awards" />
<eu.toldi.infinityforlemmy.customviews.CustomFontSwitchPreference
app:defaultValue="false"