|
@@ -87,6 +87,7 @@ import com.nextcloud.talk.events.BottomSheetLockEvent;
|
|
import com.nextcloud.talk.events.EventStatus;
|
|
import com.nextcloud.talk.events.EventStatus;
|
|
import com.nextcloud.talk.events.MoreMenuClickEvent;
|
|
import com.nextcloud.talk.events.MoreMenuClickEvent;
|
|
import com.nextcloud.talk.interfaces.ConversationMenuInterface;
|
|
import com.nextcloud.talk.interfaces.ConversationMenuInterface;
|
|
|
|
+import com.nextcloud.talk.jobs.AccountRemovalWorker;
|
|
import com.nextcloud.talk.jobs.ContactAddressBookWorker;
|
|
import com.nextcloud.talk.jobs.ContactAddressBookWorker;
|
|
import com.nextcloud.talk.jobs.DeleteConversationWorker;
|
|
import com.nextcloud.talk.jobs.DeleteConversationWorker;
|
|
import com.nextcloud.talk.models.database.UserEntity;
|
|
import com.nextcloud.talk.models.database.UserEntity;
|
|
@@ -234,7 +235,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
}
|
|
}
|
|
|
|
|
|
ImageRequest imageRequest = DisplayUtils.getImageRequestForUrl(ApiUtils.getUrlForAvatarWithNameAndPixels(currentUser.getBaseUrl(),
|
|
ImageRequest imageRequest = DisplayUtils.getImageRequestForUrl(ApiUtils.getUrlForAvatarWithNameAndPixels(currentUser.getBaseUrl(),
|
|
- currentUser.getUserId(), avatarSize), currentUser);
|
|
|
|
|
|
+ currentUser.getUserId(), avatarSize), currentUser);
|
|
|
|
|
|
ImagePipeline imagePipeline = Fresco.getImagePipeline();
|
|
ImagePipeline imagePipeline = Fresco.getImagePipeline();
|
|
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, null);
|
|
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, null);
|
|
@@ -333,7 +334,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
DisplayUtils.applyColorToStatusBar(
|
|
DisplayUtils.applyColorToStatusBar(
|
|
activity,
|
|
activity,
|
|
ResourcesCompat.getColor(getResources(), R.color.appbar, null)
|
|
ResourcesCompat.getColor(getResources(), R.color.appbar, null)
|
|
- );
|
|
|
|
|
|
+ );
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -345,7 +346,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
DisplayUtils.applyColorToStatusBar(
|
|
DisplayUtils.applyColorToStatusBar(
|
|
activity,
|
|
activity,
|
|
ResourcesCompat.getColor(getResources(), R.color.bg_default, null)
|
|
ResourcesCompat.getColor(getResources(), R.color.bg_default, null)
|
|
- );
|
|
|
|
|
|
+ );
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
searchView.post(() -> searchView.setQuery("", true));
|
|
searchView.post(() -> searchView.setQuery("", true));
|
|
@@ -367,19 +368,19 @@ public class ConversationsListController extends BaseController implements Searc
|
|
activity.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(
|
|
activity.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(
|
|
activity.appBar.getContext(),
|
|
activity.appBar.getContext(),
|
|
R.animator.appbar_elevation_off)
|
|
R.animator.appbar_elevation_off)
|
|
- );
|
|
|
|
|
|
+ );
|
|
activity.toolbar.setVisibility(View.GONE);
|
|
activity.toolbar.setVisibility(View.GONE);
|
|
activity.searchCardView.setVisibility(View.VISIBLE);
|
|
activity.searchCardView.setVisibility(View.VISIBLE);
|
|
if (getResources() != null) {
|
|
if (getResources() != null) {
|
|
DisplayUtils.applyColorToStatusBar(
|
|
DisplayUtils.applyColorToStatusBar(
|
|
activity,
|
|
activity,
|
|
ResourcesCompat.getColor(getResources(), R.color.bg_default, null)
|
|
ResourcesCompat.getColor(getResources(), R.color.bg_default, null)
|
|
- );
|
|
|
|
|
|
+ );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
SmoothScrollLinearLayoutManager layoutManager =
|
|
SmoothScrollLinearLayoutManager layoutManager =
|
|
(SmoothScrollLinearLayoutManager) recyclerView.getLayoutManager();
|
|
(SmoothScrollLinearLayoutManager) recyclerView.getLayoutManager();
|
|
- if (layoutManager!=null) {
|
|
|
|
|
|
+ if (layoutManager != null) {
|
|
layoutManager.scrollToPositionWithOffset(0, 0);
|
|
layoutManager.scrollToPositionWithOffset(0, 0);
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
@@ -465,7 +466,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
} else {
|
|
} else {
|
|
Collections.sort(callItems, (callItem, t1) ->
|
|
Collections.sort(callItems, (callItem, t1) ->
|
|
Long.compare(((CallItem) t1).getModel().getLastPing(),
|
|
Long.compare(((CallItem) t1).getModel().getLastPing(),
|
|
- ((CallItem) callItem).getModel().getLastPing()));
|
|
|
|
|
|
+ ((CallItem) callItem).getModel().getLastPing()));
|
|
}
|
|
}
|
|
|
|
|
|
adapter.updateDataSet(callItems, false);
|
|
adapter.updateDataSet(callItems, false);
|
|
@@ -484,15 +485,12 @@ public class ConversationsListController extends BaseController implements Searc
|
|
Log.d(TAG, "Starting reauth webview via getParentController()");
|
|
Log.d(TAG, "Starting reauth webview via getParentController()");
|
|
getParentController().getRouter().pushController((RouterTransaction.with
|
|
getParentController().getRouter().pushController((RouterTransaction.with
|
|
(new WebViewLoginController(currentUser.getBaseUrl(),
|
|
(new WebViewLoginController(currentUser.getBaseUrl(),
|
|
- true))
|
|
|
|
|
|
+ true))
|
|
.pushChangeHandler(new VerticalChangeHandler())
|
|
.pushChangeHandler(new VerticalChangeHandler())
|
|
.popChangeHandler(new VerticalChangeHandler())));
|
|
.popChangeHandler(new VerticalChangeHandler())));
|
|
} else {
|
|
} else {
|
|
Log.d(TAG, "Starting reauth webview via ConversationsListController");
|
|
Log.d(TAG, "Starting reauth webview via ConversationsListController");
|
|
- getRouter().pushController(RouterTransaction.with(
|
|
|
|
- new WebViewLoginController(currentUser.getBaseUrl(), true))
|
|
|
|
- .pushChangeHandler(new VerticalChangeHandler())
|
|
|
|
- .popChangeHandler(new VerticalChangeHandler()));
|
|
|
|
|
|
+ showUnauthorizedDialog();
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
@@ -736,7 +734,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
if (currentUser.hasSpreedFeatureCapability("chat-v2")) {
|
|
if (currentUser.hasSpreedFeatureCapability("chat-v2")) {
|
|
bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), Parcels.wrap(conversation));
|
|
bundle.putParcelable(BundleKeys.INSTANCE.getKEY_ACTIVE_CONVERSATION(), Parcels.wrap(conversation));
|
|
ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(),
|
|
ConductorRemapping.INSTANCE.remapChatController(getRouter(), currentUser.getId(),
|
|
- conversation.getToken(), bundle, false);
|
|
|
|
|
|
+ conversation.getToken(), bundle, false);
|
|
} else {
|
|
} else {
|
|
overridePushHandler(new NoOpControllerChangeHandler());
|
|
overridePushHandler(new NoOpControllerChangeHandler());
|
|
overridePopHandler(new NoOpControllerChangeHandler());
|
|
overridePopHandler(new NoOpControllerChangeHandler());
|
|
@@ -793,7 +791,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
new LovelyStandardDialog(getActivity(), LovelyStandardDialog.ButtonLayout.HORIZONTAL)
|
|
new LovelyStandardDialog(getActivity(), LovelyStandardDialog.ButtonLayout.HORIZONTAL)
|
|
.setTopColorRes(R.color.nc_darkRed)
|
|
.setTopColorRes(R.color.nc_darkRed)
|
|
.setIcon(DisplayUtils.getTintedDrawable(context.getResources(),
|
|
.setIcon(DisplayUtils.getTintedDrawable(context.getResources(),
|
|
- R.drawable.ic_delete_black_24dp, R.color.bg_default))
|
|
|
|
|
|
+ R.drawable.ic_delete_black_24dp, R.color.bg_default))
|
|
.setPositiveButtonColor(context.getResources().getColor(R.color.nc_darkRed))
|
|
.setPositiveButtonColor(context.getResources().getColor(R.color.nc_darkRed))
|
|
.setTitle(R.string.nc_delete_call)
|
|
.setTitle(R.string.nc_delete_call)
|
|
.setMessage(conversation.getDeleteWarningMessage())
|
|
.setMessage(conversation.getDeleteWarningMessage())
|
|
@@ -802,7 +800,7 @@ public class ConversationsListController extends BaseController implements Searc
|
|
public void onClick(View v) {
|
|
public void onClick(View v) {
|
|
Data.Builder data = new Data.Builder();
|
|
Data.Builder data = new Data.Builder();
|
|
data.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(),
|
|
data.putLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(),
|
|
- conversationMenuBundle.getLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID()));
|
|
|
|
|
|
+ conversationMenuBundle.getLong(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID()));
|
|
data.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), conversation.getToken());
|
|
data.putString(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), conversation.getToken());
|
|
conversationMenuBundle = null;
|
|
conversationMenuBundle = null;
|
|
deleteConversation(data.build());
|
|
deleteConversation(data.build());
|
|
@@ -821,6 +819,49 @@ public class ConversationsListController extends BaseController implements Searc
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void showUnauthorizedDialog() {
|
|
|
|
+ if (getActivity() != null) {
|
|
|
|
+
|
|
|
|
+ new LovelyStandardDialog(getActivity(), LovelyStandardDialog.ButtonLayout.HORIZONTAL)
|
|
|
|
+ .setTopColorRes(R.color.nc_darkRed)
|
|
|
|
+ .setIcon(DisplayUtils.getTintedDrawable(context.getResources(),
|
|
|
|
+ R.drawable.ic_delete_black_24dp, R.color.bg_default))
|
|
|
|
+ .setPositiveButtonColor(context.getResources().getColor(R.color.nc_darkRed))
|
|
|
|
+ .setTitle(R.string.nc_dialog_invalid_password)
|
|
|
|
+ .setMessage(R.string.nc_dialog_reauth_or_delete)
|
|
|
|
+ .setPositiveButton(R.string.nc_delete, new View.OnClickListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser.getId());
|
|
|
|
+
|
|
|
|
+ OneTimeWorkRequest accountRemovalWork = new OneTimeWorkRequest.Builder(AccountRemovalWorker.class).build();
|
|
|
|
+ WorkManager.getInstance().enqueue(accountRemovalWork);
|
|
|
|
+
|
|
|
|
+ if (otherUserExists && getView() != null) {
|
|
|
|
+ onViewBound(getView());
|
|
|
|
+ onAttach(getView());
|
|
|
|
+ } else if (!otherUserExists) {
|
|
|
|
+ getRouter().setRoot(RouterTransaction.with(
|
|
|
|
+ new ServerSelectionController())
|
|
|
|
+ .pushChangeHandler(new VerticalChangeHandler())
|
|
|
|
+ .popChangeHandler(new VerticalChangeHandler()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .setNegativeButton(R.string.nc_settings_reauthorize, new View.OnClickListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ getRouter().pushController(RouterTransaction.with(
|
|
|
|
+ new WebViewLoginController(currentUser.getBaseUrl(), true))
|
|
|
|
+ .pushChangeHandler(new VerticalChangeHandler())
|
|
|
|
+ .popChangeHandler(new VerticalChangeHandler()));
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .setInstanceStateHandler(ID_DELETE_CONVERSATION_DIALOG, saveStateHandler)
|
|
|
|
+ .show();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void deleteConversation(Data data) {
|
|
private void deleteConversation(Data data) {
|
|
OneTimeWorkRequest deleteConversationWorker =
|
|
OneTimeWorkRequest deleteConversationWorker =
|
|
new OneTimeWorkRequest.Builder(DeleteConversationWorker.class).setInputData(data).build();
|
|
new OneTimeWorkRequest.Builder(DeleteConversationWorker.class).setInputData(data).build();
|