mirror of https://codeberg.org/gitnex/GitNex.git
148 lines
3.5 KiB
Java
148 lines
3.5 KiB
Java
package org.mian.gitnex.fragments;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
import android.util.Log;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.TextView;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
|
import org.mian.gitnex.R;
|
|
import org.mian.gitnex.actions.NotificationsActions;
|
|
import org.mian.gitnex.helpers.AppUtil;
|
|
import org.mian.gitnex.helpers.Toasty;
|
|
import org.mian.gitnex.models.NotificationThread;
|
|
import java.util.Objects;
|
|
|
|
/**
|
|
* Author opyale
|
|
*/
|
|
|
|
public class BottomSheetNotificationsFragment extends BottomSheetDialogFragment {
|
|
|
|
private Context context;
|
|
private NotificationThread notificationThread;
|
|
private OnOptionSelectedListener onOptionSelectedListener;
|
|
|
|
public void onAttach(Context context, NotificationThread notificationThread, OnOptionSelectedListener onOptionSelectedListener) {
|
|
|
|
this.context = context;
|
|
this.notificationThread = notificationThread;
|
|
this.onOptionSelectedListener = onOptionSelectedListener;
|
|
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
|
|
View v = inflater.inflate(R.layout.bottom_sheet_notifications, container, false);
|
|
|
|
TextView markRead = v.findViewById(R.id.markRead);
|
|
TextView markUnread = v.findViewById(R.id.markUnread);
|
|
TextView markPinned = v.findViewById(R.id.markPinned);
|
|
|
|
NotificationsActions notificationsActions = new NotificationsActions(context);
|
|
Activity activity = Objects.requireNonNull(getActivity());
|
|
|
|
if(notificationThread.isPinned()) {
|
|
|
|
AppUtil.setMultiVisibility(View.GONE, markUnread, markPinned);
|
|
} else if(notificationThread.isUnread()) {
|
|
|
|
markUnread.setVisibility(View.GONE);
|
|
} else {
|
|
|
|
markRead.setVisibility(View.GONE);
|
|
}
|
|
|
|
markPinned.setOnClickListener(v12 -> {
|
|
|
|
Thread thread = new Thread(() -> {
|
|
|
|
try {
|
|
|
|
notificationsActions.setNotificationStatus(notificationThread, NotificationsActions.NotificationStatus.PINNED);
|
|
activity.runOnUiThread(() -> onOptionSelectedListener.onSelected());
|
|
|
|
}
|
|
catch(Exception e) {
|
|
|
|
activity.runOnUiThread(() -> Toasty.error(context, getString(R.string.genericError)));
|
|
Log.e("onError", e.toString());
|
|
|
|
} finally {
|
|
|
|
dismiss();
|
|
}
|
|
});
|
|
|
|
thread.start();
|
|
|
|
});
|
|
|
|
markRead.setOnClickListener(v1 -> {
|
|
|
|
Thread thread = new Thread(() -> {
|
|
|
|
try {
|
|
|
|
notificationsActions.setNotificationStatus(notificationThread, NotificationsActions.NotificationStatus.READ);
|
|
activity.runOnUiThread(() -> onOptionSelectedListener.onSelected());
|
|
|
|
}
|
|
catch(Exception e) {
|
|
|
|
activity.runOnUiThread(() -> Toasty.error(context, getString(R.string.genericError)));
|
|
Log.e("onError", e.toString());
|
|
|
|
} finally {
|
|
|
|
dismiss();
|
|
}
|
|
});
|
|
|
|
thread.start();
|
|
|
|
});
|
|
|
|
markUnread.setOnClickListener(v13 -> {
|
|
|
|
Thread thread = new Thread(() -> {
|
|
|
|
try {
|
|
|
|
notificationsActions.setNotificationStatus(notificationThread, NotificationsActions.NotificationStatus.UNREAD);
|
|
activity.runOnUiThread(() -> onOptionSelectedListener.onSelected());
|
|
|
|
}
|
|
catch(Exception e) {
|
|
|
|
activity.runOnUiThread(() -> Toasty.error(context, getString(R.string.genericError)));
|
|
Log.e("onError", e.toString());
|
|
|
|
} finally {
|
|
|
|
dismiss();
|
|
}
|
|
});
|
|
|
|
thread.start();
|
|
|
|
});
|
|
|
|
return v;
|
|
|
|
}
|
|
|
|
public interface OnOptionSelectedListener {
|
|
|
|
void onSelected();
|
|
}
|
|
|
|
}
|