mirror of
https://codeberg.org/tom79/Fedilab.git
synced 2024-12-22 16:50:04 +02:00
fix an issue with friendica
This commit is contained in:
parent
72b5517421
commit
e425528648
2 changed files with 53 additions and 52 deletions
|
@ -96,23 +96,30 @@ public class EditProfileActivity extends BaseActivity {
|
||||||
else
|
else
|
||||||
bio = Html.fromHtml(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.note).toString();
|
bio = Html.fromHtml(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.note).toString();
|
||||||
binding.bio.setText(bio);
|
binding.bio.setText(bio);
|
||||||
binding.sensitive.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.sensitive);
|
if (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source != null) {
|
||||||
|
binding.sensitive.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.sensitive);
|
||||||
|
switch (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.privacy) {
|
||||||
|
case "public":
|
||||||
|
binding.visibilityPublic.setChecked(true);
|
||||||
|
break;
|
||||||
|
case "unlisted":
|
||||||
|
binding.visibilityUnlisted.setChecked(true);
|
||||||
|
break;
|
||||||
|
case "private":
|
||||||
|
binding.visibilityPrivate.setChecked(true);
|
||||||
|
break;
|
||||||
|
case "direct":
|
||||||
|
binding.visibilityDirect.setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
binding.sensitive.setVisibility(View.GONE);
|
||||||
|
binding.visibilityGroup.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
binding.bot.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.bot);
|
binding.bot.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.bot);
|
||||||
binding.discoverable.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.discoverable);
|
binding.discoverable.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.discoverable);
|
||||||
switch (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.privacy) {
|
|
||||||
case "public":
|
|
||||||
binding.visibilityPublic.setChecked(true);
|
|
||||||
break;
|
|
||||||
case "unlisted":
|
|
||||||
binding.visibilityUnlisted.setChecked(true);
|
|
||||||
break;
|
|
||||||
case "private":
|
|
||||||
binding.visibilityPrivate.setChecked(true);
|
|
||||||
break;
|
|
||||||
case "direct":
|
|
||||||
binding.visibilityDirect.setChecked(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.locked) {
|
if (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.locked) {
|
||||||
binding.locked.setChecked(true);
|
binding.locked.setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -14,8 +14,6 @@ package app.fedilab.android.ui.fragment.timeline;
|
||||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
import static app.fedilab.android.BaseMainActivity.networkAvailable;
|
|
||||||
|
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -173,29 +171,12 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
excludeType.remove("follow");
|
excludeType.remove("follow");
|
||||||
excludeType.remove("follow_request");
|
excludeType.remove("follow_request");
|
||||||
}
|
}
|
||||||
new Thread(() -> {
|
route(null, false);
|
||||||
QuickLoad quickLoad = new QuickLoad(requireActivity()).getSavedValue(MainActivity.currentUserID, MainActivity.currentInstance, notificationType);
|
|
||||||
}).start();
|
|
||||||
router(null);
|
|
||||||
LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_STATUS_ACTION));
|
LocalBroadcastManager.getInstance(requireActivity()).registerReceiver(receive_action, new IntentFilter(Helper.RECEIVE_STATUS_ACTION));
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void router(FragmentMastodonTimeline.DIRECTION direction) {
|
|
||||||
if (networkAvailable == BaseMainActivity.status.UNKNOWN) {
|
|
||||||
new Thread(() -> {
|
|
||||||
if (networkAvailable == BaseMainActivity.status.UNKNOWN) {
|
|
||||||
networkAvailable = Helper.isConnectedToInternet(requireActivity(), BaseMainActivity.currentInstance);
|
|
||||||
}
|
|
||||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
|
||||||
Runnable myRunnable = () -> route(direction, false);
|
|
||||||
mainHandler.post(myRunnable);
|
|
||||||
}).start();
|
|
||||||
} else {
|
|
||||||
route(direction, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
|
@ -211,10 +192,18 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
* @param notifications {@link Notifications}
|
* @param notifications {@link Notifications}
|
||||||
*/
|
*/
|
||||||
private void initializeNotificationView(final Notifications notifications) {
|
private void initializeNotificationView(final Notifications notifications) {
|
||||||
|
|
||||||
binding.loader.setVisibility(View.GONE);
|
|
||||||
binding.swipeContainer.setRefreshing(false);
|
|
||||||
flagLoading = false;
|
flagLoading = false;
|
||||||
|
if (binding == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
binding.loader.setVisibility(View.GONE);
|
||||||
|
binding.noAction.setVisibility(View.GONE);
|
||||||
|
binding.swipeContainer.setRefreshing(false);
|
||||||
|
binding.swipeContainer.setOnRefreshListener(() -> {
|
||||||
|
binding.swipeContainer.setRefreshing(true);
|
||||||
|
flagLoading = false;
|
||||||
|
route(FragmentMastodonTimeline.DIRECTION.REFRESH, true);
|
||||||
|
});
|
||||||
if (notifications == null || notifications.notifications == null || notifications.notifications.size() == 0) {
|
if (notifications == null || notifications.notifications == null || notifications.notifications.size() == 0) {
|
||||||
binding.noActionText.setText(R.string.no_notifications);
|
binding.noActionText.setText(R.string.no_notifications);
|
||||||
binding.noAction.setVisibility(View.VISIBLE);
|
binding.noAction.setVisibility(View.VISIBLE);
|
||||||
|
@ -224,6 +213,9 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
binding.noAction.setVisibility(View.GONE);
|
binding.noAction.setVisibility(View.GONE);
|
||||||
binding.recyclerView.setVisibility(View.VISIBLE);
|
binding.recyclerView.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
for (Notification notification : notifications.notifications) {
|
||||||
|
idOfAddedNotifications.add(notification.id);
|
||||||
|
}
|
||||||
flagLoading = notifications.pagination.max_id == null;
|
flagLoading = notifications.pagination.max_id == null;
|
||||||
if (aggregateNotification) {
|
if (aggregateNotification) {
|
||||||
notifications.notifications = aggregateNotifications(notifications.notifications);
|
notifications.notifications = aggregateNotifications(notifications.notifications);
|
||||||
|
@ -234,13 +226,24 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
this.notificationList = new ArrayList<>();
|
this.notificationList = new ArrayList<>();
|
||||||
notificationAdapter.notifyItemRangeRemoved(0, size);
|
notificationAdapter.notifyItemRangeRemoved(0, size);
|
||||||
}
|
}
|
||||||
this.notificationList = notifications.notifications;
|
if (this.notificationList == null) {
|
||||||
|
this.notificationList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
this.notificationList.addAll(notifications.notifications);
|
||||||
|
|
||||||
|
if (max_id == null || (notifications.pagination.max_id != null && notifications.pagination.max_id.compareTo(max_id) < 0)) {
|
||||||
|
max_id = notifications.pagination.max_id;
|
||||||
|
}
|
||||||
|
if (min_id == null || (notifications.pagination.min_id != null && notifications.pagination.min_id.compareTo(min_id) > 0)) {
|
||||||
|
min_id = notifications.pagination.min_id;
|
||||||
|
}
|
||||||
|
|
||||||
notificationAdapter = new NotificationAdapter(this.notificationList);
|
notificationAdapter = new NotificationAdapter(this.notificationList);
|
||||||
notificationAdapter.fetchMoreCallBack = this;
|
notificationAdapter.fetchMoreCallBack = this;
|
||||||
mLayoutManager = new LinearLayoutManager(requireActivity());
|
mLayoutManager = new LinearLayoutManager(requireActivity());
|
||||||
binding.recyclerView.setLayoutManager(mLayoutManager);
|
binding.recyclerView.setLayoutManager(mLayoutManager);
|
||||||
binding.recyclerView.setAdapter(notificationAdapter);
|
binding.recyclerView.setAdapter(notificationAdapter);
|
||||||
max_id = notifications.pagination.max_id;
|
|
||||||
binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||||
|
@ -258,7 +261,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
if (!flagLoading) {
|
if (!flagLoading) {
|
||||||
flagLoading = true;
|
flagLoading = true;
|
||||||
binding.loadingNextElements.setVisibility(View.VISIBLE);
|
binding.loadingNextElements.setVisibility(View.VISIBLE);
|
||||||
router(FragmentMastodonTimeline.DIRECTION.BOTTOM);
|
route(FragmentMastodonTimeline.DIRECTION.BOTTOM, false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
binding.loadingNextElements.setVisibility(View.GONE);
|
binding.loadingNextElements.setVisibility(View.GONE);
|
||||||
|
@ -267,18 +270,11 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
if (!flagLoading) {
|
if (!flagLoading) {
|
||||||
flagLoading = true;
|
flagLoading = true;
|
||||||
binding.loadingNextElements.setVisibility(View.VISIBLE);
|
binding.loadingNextElements.setVisibility(View.VISIBLE);
|
||||||
router(FragmentMastodonTimeline.DIRECTION.TOP);
|
route(FragmentMastodonTimeline.DIRECTION.TOP, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
binding.swipeContainer.setOnRefreshListener(() -> {
|
|
||||||
binding.swipeContainer.setRefreshing(true);
|
|
||||||
flagLoading = false;
|
|
||||||
route(FragmentMastodonTimeline.DIRECTION.REFRESH, true);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -316,7 +312,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
.observe(getViewLifecycleOwner(), notificationsBottom -> dealWithPagination(notificationsBottom, FragmentMastodonTimeline.DIRECTION.BOTTOM, false));
|
.observe(getViewLifecycleOwner(), notificationsBottom -> dealWithPagination(notificationsBottom, FragmentMastodonTimeline.DIRECTION.BOTTOM, false));
|
||||||
} else if (direction == FragmentMastodonTimeline.DIRECTION.TOP) {
|
} else if (direction == FragmentMastodonTimeline.DIRECTION.TOP) {
|
||||||
notificationsVM.getNotifications(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, null, null, fetchingMissing ? min_id_fetch_more : min_id, MastodonHelper.statusesPerCall(requireActivity()), excludeType, null)
|
notificationsVM.getNotifications(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, null, null, fetchingMissing ? min_id_fetch_more : min_id, MastodonHelper.statusesPerCall(requireActivity()), excludeType, null)
|
||||||
.observe(getViewLifecycleOwner(), notificationsTop -> dealWithPagination(notificationsTop, FragmentMastodonTimeline.DIRECTION.BOTTOM, fetchingMissing));
|
.observe(getViewLifecycleOwner(), notificationsTop -> dealWithPagination(notificationsTop, FragmentMastodonTimeline.DIRECTION.TOP, fetchingMissing));
|
||||||
} else if (direction == FragmentMastodonTimeline.DIRECTION.REFRESH) {
|
} else if (direction == FragmentMastodonTimeline.DIRECTION.REFRESH) {
|
||||||
notificationsVM.getNotifications(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, null, null, null, MastodonHelper.statusesPerCall(requireActivity()), excludeType, null)
|
notificationsVM.getNotifications(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, null, null, null, MastodonHelper.statusesPerCall(requireActivity()), excludeType, null)
|
||||||
.observe(getViewLifecycleOwner(), notificationsRefresh -> {
|
.observe(getViewLifecycleOwner(), notificationsRefresh -> {
|
||||||
|
@ -330,9 +326,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
||||||
};
|
};
|
||||||
mainHandler.post(myRunnable);
|
mainHandler.post(myRunnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Notification> aggregateNotifications(List<Notification> notifications) {
|
private List<Notification> aggregateNotifications(List<Notification> notifications) {
|
||||||
|
|
Loading…
Reference in a new issue