Merge pull request #2061 from nextcloud/chore/noid/migrateParceler2

Parcel to Parcelize Migration
This commit is contained in:
Andy Scherzinger 2022-05-18 12:16:29 +02:00 committed by GitHub
commit 579e73ef2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
156 changed files with 3249 additions and 6711 deletions

View File

@ -191,16 +191,16 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() {
if (delete) {
cancelExistingNotificationWithId(
applicationContext,
signatureVerification!!.userEntity,
signatureVerification!!.userEntity!!,
notificationId
)
} else if (deleteAll) {
cancelAllNotificationsForAccount(applicationContext, signatureVerification!!.userEntity)
cancelAllNotificationsForAccount(applicationContext, signatureVerification!!.userEntity!!)
} else if (deleteMultiple) {
notificationIds!!.forEach {
cancelExistingNotificationWithId(
applicationContext,
signatureVerification!!.userEntity,
signatureVerification!!.userEntity!!,
it
)
}
@ -222,7 +222,7 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() {
val soundUri = getCallRingtoneUri(applicationContext!!, appPreferences!!)
val notificationChannelId = NotificationUtils.NOTIFICATION_CHANNEL_CALLS_V4
val uri = Uri.parse(signatureVerification!!.userEntity.baseUrl)
val uri = Uri.parse(signatureVerification!!.userEntity!!.baseUrl)
val baseUrl = uri.host
val notification =
@ -275,10 +275,13 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() {
)
ncApi.getPeersForCall(
ApiUtils.getCredentials(signatureVerification.userEntity.username, signatureVerification.userEntity.token),
ApiUtils.getCredentials(
signatureVerification.userEntity!!.username,
signatureVerification.userEntity!!.token
),
ApiUtils.getUrlForCall(
apiVersion,
signatureVerification.userEntity.baseUrl,
signatureVerification.userEntity!!.baseUrl,
decryptedPushMessage.id
)
)
@ -298,7 +301,7 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() {
hasParticipantsInCall = participantList.isNotEmpty()
if (hasParticipantsInCall) {
for (participant in participantList) {
if (participant.actorId == signatureVerification.userEntity.userId &&
if (participant.actorId == signatureVerification.userEntity!!.userId &&
participant.actorType == Participant.ActorType.USERS
) {
inCallOnDifferentDevice = true

View File

@ -268,11 +268,6 @@ public class CallActivity extends CallBaseActivity {
private AudioOutputDialog audioOutputDialog;
@Parcel
public enum CallStatus {
CONNECTING, CALLING_TIMEOUT, JOINED, IN_CONVERSATION, RECONNECTING, OFFLINE, LEAVING, PUBLISHER_FAILED
}
@SuppressLint("ClickableViewAccessibility")
@Override
public void onCreate(Bundle savedInstanceState) {

View File

@ -280,7 +280,7 @@ public class CallNotificationActivity extends CallBaseActivity {
@Override
public void onNext(@io.reactivex.annotations.NonNull RoomOverall roomOverall) {
currentConversation = roomOverall.getOcs().data;
currentConversation = roomOverall.getOcs().getData();
setUpAfterConversationIsKnown();
if (apiVersion >= 3) {
@ -288,7 +288,7 @@ public class CallNotificationActivity extends CallBaseActivity {
CapabilitiesUtil.hasSpreedFeatureCapability(userBeingCalled,
"conversation-call-flags");
if (hasCallFlags) {
if (isInCallWithVideo(currentConversation.callFlag)) {
if (isInCallWithVideo(currentConversation.getCallFlag())) {
binding.incomingCallVoiceOrVideoTextView.setText(
String.format(getResources().getString(R.string.nc_call_video),
getResources().getString(R.string.nc_app_product_name)));

View File

@ -0,0 +1,28 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.activities
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
enum class CallStatus : Parcelable {
CONNECTING, CALLING_TIMEOUT, JOINED, IN_CONVERSATION, RECONNECTING, OFFLINE, LEAVING, PUBLISHER_FAILED
}

View File

@ -256,8 +256,8 @@ class MainActivity : BaseActivity(), ActionBarProvider {
override fun onNext(roomOverall: RoomOverall) {
val bundle = Bundle()
bundle.putParcelable(KEY_USER_ENTITY, currentUser)
bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs.data.token)
bundle.putString(KEY_ROOM_ID, roomOverall.ocs.data.roomId)
bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token)
bundle.putString(KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId)
// FIXME once APIv2 or later is used only, the createRoom already returns all the data
ncApi.getRoom(
@ -265,7 +265,7 @@ class MainActivity : BaseActivity(), ActionBarProvider {
ApiUtils.getUrlForRoom(
apiVersion,
currentUser.baseUrl,
roomOverall.ocs.data.token
roomOverall.ocs!!.data!!.token
)
)
.subscribeOn(Schedulers.io())
@ -277,11 +277,11 @@ class MainActivity : BaseActivity(), ActionBarProvider {
override fun onNext(roomOverall: RoomOverall) {
bundle.putParcelable(
KEY_ACTIVE_CONVERSATION,
Parcels.wrap(roomOverall.ocs.data)
Parcels.wrap(roomOverall.ocs!!.data)
)
remapChatController(
router!!, currentUser.id,
roomOverall.ocs.data.token, bundle, true
roomOverall.ocs!!.data!!.token!!, bundle, true
)
}

View File

@ -165,10 +165,10 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
ContextCompat.getColor(context,
R.color.colorPrimary));
if (conversation.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
if (conversation.getType() == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
holder.binding.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary);
holder.binding.dialogUnreadBubble.setTextColor(Color.WHITE);
} else if (conversation.isUnreadMention()) {
} else if (conversation.getUnreadMention()) {
if (CapabilitiesUtil.hasSpreedFeatureCapability(userEntity, "direct-mention-flag")) {
if (conversation.getUnreadMentionDirect()) {
holder.binding.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary);
@ -196,7 +196,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
holder.binding.dialogUnreadBubble.setVisibility(View.GONE);
}
if (conversation.isFavorite()) {
if (conversation.getFavorite()) {
holder.binding.favoriteConversationImageView.setVisibility(View.VISIBLE);
} else {
holder.binding.favoriteConversationImageView.setVisibility(View.GONE);
@ -227,7 +227,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
String authorDisplayName = "";
conversation.getLastMessage().setActiveUser(userEntity);
String text;
if (conversation.getLastMessage().getMessageType() == ChatMessage.MessageType.REGULAR_TEXT_MESSAGE) {
if (conversation.getLastMessage().getCalculateMessageType() == ChatMessage.MessageType.REGULAR_TEXT_MESSAGE) {
if (conversation.getLastMessage().getActorId().equals(userEntity.getUserId())) {
text = String.format(appContext.getString(R.string.nc_formatted_message_you),
conversation.getLastMessage().getLastMessageDisplayText());

View File

@ -113,11 +113,11 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
}
private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) {
val author: String = message.actorDisplayName
val author: String = message.actorDisplayName!!
if (!TextUtils.isEmpty(author)) {
binding.messageAuthor.text = author
binding.messageUserAvatar.setOnClickListener {
(payload as? ProfileBottomSheet)?.showFor(message.actorId, itemView.context)
(payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
}
} else {
binding.messageAuthor.setText(R.string.nc_nick_guest)
@ -180,13 +180,13 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
if (!message.isDeleted && message.parentMessage != null) {
val parentChatMessage = message.parentMessage
parentChatMessage.activeUser = message.activeUser
parentChatMessage.imageUrl?.let {
parentChatMessage!!.activeUser = message.activeUser
parentChatMessage!!.imageUrl?.let {
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
binding.messageQuote.quotedMessageImage.load(it) {
addHeader(
"Authorization",
ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token)
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)
)
}
} ?: run {
@ -199,7 +199,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
binding.messageQuote.quotedMessageAuthor
.setTextColor(context!!.resources.getColor(R.color.textColorMaxContrast))
if (parentChatMessage.actorId?.equals(message.activeUser.userId) == true) {
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.colorPrimary)
} else {
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
@ -213,9 +213,9 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
@SuppressLint("SetJavaScriptEnabled", "ClickableViewAccessibility")
private fun setLocationDataOnMessageItem(message: ChatMessage) {
if (message.messageParameters != null && message.messageParameters.size > 0) {
for (key in message.messageParameters.keys) {
val individualHashMap: Map<String, String> = message.messageParameters[key]!!
if (message.messageParameters != null && message.messageParameters!!.size > 0) {
for (key in message.messageParameters!!.keys) {
val individualHashMap: Map<String?, String?> = message.messageParameters!![key]!!
if (individualHashMap["type"] == "geo-location") {
locationLon = individualHashMap["longitude"]
locationLat = individualHashMap["latitude"]

View File

@ -154,7 +154,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
private fun updateDownloadState(message: ChatMessage) {
// check if download worker is already running
val fileId = message.getSelectedIndividualHashMap()["id"]
val fileId = message.selectedIndividualHashMap!!["id"]
val workers = WorkManager.getInstance(context!!).getWorkInfosByTag(fileId!!)
try {
@ -206,11 +206,11 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
}
private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) {
val author: String = message.actorDisplayName
val author: String = message.actorDisplayName!!
if (!TextUtils.isEmpty(author)) {
binding.messageAuthor.text = author
binding.messageUserAvatar.setOnClickListener {
(payload as? ProfileBottomSheet)?.showFor(message.actorId, itemView.context)
(payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
}
} else {
binding.messageAuthor.setText(R.string.nc_nick_guest)
@ -281,13 +281,13 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
if (!message.isDeleted && message.parentMessage != null) {
val parentChatMessage = message.parentMessage
parentChatMessage.activeUser = message.activeUser
parentChatMessage.imageUrl?.let {
parentChatMessage!!.activeUser = message.activeUser
parentChatMessage!!.imageUrl?.let {
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
binding.messageQuote.quotedMessageImage.load(it) {
addHeader(
"Authorization",
ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token)
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)
)
}
} ?: run {
@ -300,7 +300,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
binding.messageQuote.quotedMessageAuthor
.setTextColor(ContextCompat.getColor(context!!, R.color.textColorMaxContrast))
if (parentChatMessage.actorId?.equals(message.activeUser.userId) == true) {
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.colorPrimary)
} else {
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)

View File

@ -120,7 +120,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
binding.messageQuote.quotedChatMessageView.visibility = View.GONE
}
itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable)
itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.replyable)
Reaction().showReactions(message, binding.reactions, binding.messageText.context, false)
binding.reactions.reactionsEmojiWrapper.setOnClickListener {
@ -136,7 +136,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
if (!TextUtils.isEmpty(message.actorDisplayName)) {
binding.messageAuthor.text = message.actorDisplayName
binding.messageUserAvatar.setOnClickListener {
(payload as? ProfileBottomSheet)?.showFor(message.actorId, itemView.context)
(payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
}
} else {
binding.messageAuthor.setText(R.string.nc_nick_guest)
@ -169,13 +169,13 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
private fun processParentMessage(message: ChatMessage) {
val parentChatMessage = message.parentMessage
parentChatMessage.activeUser = message.activeUser
parentChatMessage!!.activeUser = message.activeUser
parentChatMessage.imageUrl?.let {
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
binding.messageQuote.quotedMessageImage.load(it) {
addHeader(
"Authorization",
ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token)
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)
)
}
} ?: run {
@ -188,7 +188,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
binding.messageQuote.quotedMessageAuthor
.setTextColor(ContextCompat.getColor(context!!, R.color.textColorMaxContrast))
if (parentChatMessage.actorId?.equals(message.activeUser.userId) == true) {
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.colorPrimary)
} else {
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
@ -226,13 +226,13 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
}
private fun processMessageParameters(
messageParameters: HashMap<String, HashMap<String, String>>,
messageParameters: HashMap<String?, HashMap<String?, String?>>,
message: ChatMessage,
messageString: Spannable
): Spannable {
var messageStringInternal = messageString
for (key in messageParameters.keys) {
val individualHashMap = message.messageParameters[key]
val individualHashMap = message.messageParameters!![key]
if (individualHashMap != null) {
if (
individualHashMap["type"] == "user" ||

View File

@ -66,7 +66,7 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
override fun onBind(message: ChatMessage) {
super.onBind(message)
sharedApplication!!.componentApplication.inject(this)
val messageParameters: HashMap<String, HashMap<String, String>>? = message.messageParameters
val messageParameters: HashMap<String?, HashMap<String?, String?>>? = message.messageParameters
var messageString: Spannable = SpannableString(message.text)
realView.isSelected = false
binding.messageTime.setTextColor(context!!.resources.getColor(R.color.white60))
@ -119,7 +119,7 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
binding.checkMark.setContentDescription(readStatusContentDescriptionString)
itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable)
itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.replyable)
Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener {
@ -133,13 +133,13 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
private fun processParentMessage(message: ChatMessage) {
val parentChatMessage = message.parentMessage
parentChatMessage.activeUser = message.activeUser
parentChatMessage!!.activeUser = message.activeUser
parentChatMessage.imageUrl?.let {
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
binding.messageQuote.quotedMessageImage.load(it) {
addHeader(
"Authorization",
ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token)
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)
)
}
} ?: run {
@ -183,13 +183,13 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
}
private fun processMessageParameters(
messageParameters: HashMap<String, HashMap<String, String>>,
messageParameters: HashMap<String?, HashMap<String?, String?>>,
message: ChatMessage,
messageString: Spannable
): Spannable {
var messageString1 = messageString
for (key in messageParameters.keys) {
val individualHashMap: HashMap<String, String>? = message.messageParameters[key]
val individualHashMap: HashMap<String?, String?>? = message.messageParameters!![key]
if (individualHashMap != null) {
if (individualHashMap["type"] == "user" ||
individualHashMap["type"] == "guest" ||

View File

@ -116,8 +116,8 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
public void onBind(ChatMessage message) {
super.onBind(message);
if (userAvatar != null) {
if (message.isGrouped || message.isOneToOneConversation) {
if (message.isOneToOneConversation) {
if (message.isGrouped() || message.isOneToOneConversation()) {
if (message.isOneToOneConversation()) {
userAvatar.setVisibility(View.GONE);
} else {
userAvatar.setVisibility(View.INVISIBLE);
@ -126,11 +126,11 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
userAvatar.setVisibility(View.VISIBLE);
userAvatar.setOnClickListener(v -> {
if (payload instanceof ProfileBottomSheet) {
((ProfileBottomSheet) payload).showFor(message.actorId, v.getContext());
((ProfileBottomSheet) payload).showFor(message.getActorId(), v.getContext());
}
});
if (ACTOR_TYPE_BOTS.equals(message.actorType) && ACTOR_ID_CHANGELOG.equals(message.actorId)) {
if (ACTOR_TYPE_BOTS.equals(message.getActorType()) && ACTOR_ID_CHANGELOG.equals(message.getActorId())) {
if (context != null) {
Drawable[] layers = new Drawable[2];
layers[0] = ContextCompat.getDrawable(context, R.drawable.ic_launcher_background);
@ -148,9 +148,9 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
clickView = getImage();
getMessageText().setVisibility(View.VISIBLE);
if (message.getMessageType() == ChatMessage.MessageType.SINGLE_NC_ATTACHMENT_MESSAGE) {
if (message.getCalculateMessageType() == ChatMessage.MessageType.SINGLE_NC_ATTACHMENT_MESSAGE) {
fileViewerUtils = new FileViewerUtils(context, message.activeUser);
fileViewerUtils = new FileViewerUtils(context, message.getActiveUser());
String fileName = message.getSelectedIndividualHashMap().get(KEY_NAME);
getMessageText().setText(fileName);
@ -177,10 +177,13 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
Drawable drawable = ContextCompat.getDrawable(context, drawableResourceId);
image.getHierarchy().setPlaceholderImage(drawable);
} else {
fetchFileInformation("/" + message.getSelectedIndividualHashMap().get(KEY_PATH), message.activeUser);
fetchFileInformation("/" + message.getSelectedIndividualHashMap().get(KEY_PATH),
message.getActiveUser());
}
if (message.activeUser != null && message.activeUser.getUsername() != null && message.activeUser.getBaseUrl() != null) {
if (message.getActiveUser() != null &&
message.getActiveUser().getUsername() != null &&
message.getActiveUser().getBaseUrl() != null) {
clickView.setOnClickListener(v ->
fileViewerUtils.openFile(
message,
@ -202,10 +205,10 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
message.getSelectedIndividualHashMap().get(MagicPreviewMessageViewHolder.KEY_MIMETYPE),
new FileViewerUtils.ProgressUi(progressBar, getMessageText(), image));
} else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE) {
} else if (message.getCalculateMessageType() == ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE) {
getMessageText().setText("GIPHY");
DisplayUtils.setClickableString("GIPHY", "https://giphy.com", getMessageText());
} else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_TENOR_MESSAGE) {
} else if (message.getCalculateMessageType() == ChatMessage.MessageType.SINGLE_LINK_TENOR_MESSAGE) {
getMessageText().setText("Tenor");
DisplayUtils.setClickableString("Tenor", "https://tenor.com", getMessageText());
} else {
@ -221,7 +224,7 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
getMessageText().setText("");
}
itemView.setTag(REPLYABLE_VIEW_TAG, message.isReplyable());
itemView.setTag(REPLYABLE_VIEW_TAG, message.getReplyable());
reactionsBinding = getReactionsBinding();
new Reaction().showReactions(message, reactionsBinding, getMessageText().getContext(), true);
@ -307,7 +310,7 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
new Handler(context.getMainLooper()).post(() -> {
int resourceId = DrawableUtils
.INSTANCE
.getDrawableResourceIdForMimeType(browserFileList.get(0).mimeType);
.getDrawableResourceIdForMimeType(browserFileList.get(0).getMimeType());
Drawable drawable = ContextCompat.getDrawable(context, resourceId);
image.getHierarchy().setPlaceholderImage(drawable);
});

View File

@ -76,9 +76,9 @@ public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMes
Spannable messageString = new SpannableString(message.getText());
if (message.messageParameters != null && message.messageParameters.size() > 0) {
for (String key : message.messageParameters.keySet()) {
Map<String, String> individualMap = message.messageParameters.get(key);
if (message.getMessageParameters() != null && message.getMessageParameters().size() > 0) {
for (String key : message.getMessageParameters().keySet()) {
Map<String, String> individualMap = message.getMessageParameters().get(key);
if (individualMap != null && individualMap.containsKey("name")) {
String searchText;
@ -97,6 +97,6 @@ public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMes
text.setText(messageString);
itemView.setTag(REPLYABLE_VIEW_TAG, message.isReplyable());
itemView.setTag(REPLYABLE_VIEW_TAG, message.getReplyable());
}
}

View File

@ -126,9 +126,9 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
@SuppressLint("SetJavaScriptEnabled", "ClickableViewAccessibility")
private fun setLocationDataOnMessageItem(message: ChatMessage) {
if (message.messageParameters != null && message.messageParameters.size > 0) {
for (key in message.messageParameters.keys) {
val individualHashMap: Map<String, String> = message.messageParameters[key]!!
if (message.messageParameters != null && message.messageParameters!!.size > 0) {
for (key in message.messageParameters!!.keys) {
val individualHashMap: Map<String?, String?> = message.messageParameters!![key]!!
if (individualHashMap["type"] == "geo-location") {
locationLon = individualHashMap["longitude"]
locationLat = individualHashMap["latitude"]
@ -185,13 +185,13 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
if (!message.isDeleted && message.parentMessage != null) {
val parentChatMessage = message.parentMessage
parentChatMessage.activeUser = message.activeUser
parentChatMessage!!.activeUser = message.activeUser
parentChatMessage.imageUrl?.let {
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
binding.messageQuote.quotedMessageImage.load(it) {
addHeader(
"Authorization",
ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token)
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)
)
}
} ?: run {

View File

@ -180,7 +180,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
private fun updateDownloadState(message: ChatMessage) {
// check if download worker is already running
val fileId = message.getSelectedIndividualHashMap()["id"]
val fileId = message.selectedIndividualHashMap!!["id"]
val workers = WorkManager.getInstance(context!!).getWorkInfosByTag(fileId!!)
try {
@ -235,13 +235,13 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
if (!message.isDeleted && message.parentMessage != null) {
val parentChatMessage = message.parentMessage
parentChatMessage.activeUser = message.activeUser
parentChatMessage!!.activeUser = message.activeUser
parentChatMessage.imageUrl?.let {
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
binding.messageQuote.quotedMessageImage.load(it) {
addHeader(
"Authorization",
ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token)
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)
)
}
} ?: run {

View File

@ -44,10 +44,10 @@ class Reaction {
isOutgoingMessage: Boolean
) {
binding.reactionsEmojiWrapper.removeAllViews()
if (message.reactions != null && message.reactions.isNotEmpty()) {
if (message.reactions != null && message.reactions!!.isNotEmpty()) {
var remainingEmojisToDisplay = MAX_EMOJIS_TO_DISPLAY
val showInfoAboutMoreEmojis = message.reactions.size > MAX_EMOJIS_TO_DISPLAY
val showInfoAboutMoreEmojis = message.reactions!!.size > MAX_EMOJIS_TO_DISPLAY
val textColor = getTextColor(context, isOutgoingMessage, binding)
val amountParams = getAmountLayoutParams(context)
@ -57,7 +57,7 @@ class Reaction {
val paddingTop = DisplayUtils.convertDpToPixel(WRAPPER_PADDING_TOP, context).toInt()
val paddingBottom = DisplayUtils.convertDpToPixel(WRAPPER_PADDING_BOTTOM, context).toInt()
for ((emoji, amount) in message.reactions) {
for ((emoji, amount) in message.reactions!!) {
val emojiWithAmountWrapper = getEmojiWithAmountWrapperLayout(
context,
message,
@ -99,8 +99,8 @@ class Reaction {
emojiWithAmountWrapper.layoutParams = layoutInfo.wrapperParams
if (message.reactionsSelf != null &&
message.reactionsSelf.isNotEmpty() &&
message.reactionsSelf.contains(emoji)
message.reactionsSelf!!.isNotEmpty() &&
message.reactionsSelf!!.contains(emoji)
) {
emojiWithAmountWrapper.background =
AppCompatResources.getDrawable(context, R.drawable.reaction_self_background)

View File

@ -129,7 +129,7 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.Browse
}
if (selectionInterface.shouldOnlySelectOneImageFile()) {
if (browserFile.isFile && browserFile.mimeType.startsWith("image/")) {
if (browserFile.isFile() && browserFile.getMimeType().startsWith("image/")) {
holder.binding.selectFileCheckbox.setVisibility(View.VISIBLE);
} else {
holder.binding.selectFileCheckbox.setVisibility(View.GONE);
@ -148,7 +148,7 @@ public class BrowserFileItem extends AbstractFlexibleItem<BrowserFileItem.Browse
context, DrawableUtils.INSTANCE.getDrawableResourceIdForMimeType(browserFile.getMimeType())));
}
if (browserFile.isHasPreview()) {
if (browserFile.getHasPreview()) {
String path = ApiUtils.getUrlForFilePreviewWithRemotePath(activeUser.getBaseUrl(),
browserFile.getPath(),
context.getResources().getDimensionPixelSize(R.dimen.small_item_height));

View File

@ -23,6 +23,7 @@ package com.nextcloud.talk.components.filebrowser.controllers
import android.annotation.SuppressLint
import android.os.Bundle
import android.os.Parcelable
import android.util.Log
import android.view.Menu
import android.view.MenuInflater
@ -55,9 +56,9 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USER_ENTITY
import com.nextcloud.talk.utils.database.user.UserUtils
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
import kotlinx.android.parcel.Parcelize
import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener
import okhttp3.OkHttpClient
import org.parceler.Parcel
import org.parceler.Parcels
import java.io.File
import java.util.ArrayList
@ -198,7 +199,7 @@ abstract class BrowserController(args: Bundle) :
recyclerViewItems = ArrayList()
if (davResponse.getData() != null) {
val objectList = davResponse.getData() as List<BrowserFile>
currentPath = objectList[0].getPath()
currentPath = objectList[0].path!!
if (activity != null) {
activity!!.runOnUiThread { setTitle() }
}
@ -256,8 +257,8 @@ abstract class BrowserController(args: Bundle) :
override fun onItemClick(view: View, position: Int): Boolean {
val browserFile = (adapter!!.getItem(position) as BrowserFileItem).model
if ("inode/directory" == browserFile.getMimeType()) {
fetchPath(browserFile.getPath())
if ("inode/directory" == browserFile.mimeType) {
fetchPath(browserFile.path!!)
return true
}
return false
@ -294,8 +295,8 @@ abstract class BrowserController(args: Bundle) :
abstract override fun shouldOnlySelectOneImageFile(): Boolean
@Parcel
enum class BrowserType {
@Parcelize
enum class BrowserType : Parcelable {
FILE_BROWSER, DAV_BROWSER
}

View File

@ -1,309 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.components.filebrowser.models;
import android.net.Uri;
import android.text.TextUtils;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted;
import com.nextcloud.talk.components.filebrowser.models.properties.NCPermission;
import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview;
import com.nextcloud.talk.components.filebrowser.models.properties.OCFavorite;
import com.nextcloud.talk.components.filebrowser.models.properties.OCId;
import com.nextcloud.talk.components.filebrowser.models.properties.OCSize;
import org.parceler.Parcel;
import java.io.File;
import java.util.List;
import at.bitfire.dav4jvm.Property;
import at.bitfire.dav4jvm.Response;
import at.bitfire.dav4jvm.property.DisplayName;
import at.bitfire.dav4jvm.property.GetContentType;
import at.bitfire.dav4jvm.property.GetLastModified;
import at.bitfire.dav4jvm.property.ResourceType;
@JsonObject
@Parcel
public class BrowserFile {
public String path;
public String displayName;
public String mimeType;
public long modifiedTimestamp;
public long size;
public boolean isFile;
// Used for remote files
public String remoteId;
public boolean hasPreview;
public boolean favorite;
public boolean encrypted;
public String permissions;
private boolean isAllowedToReShare = false;
public static BrowserFile getModelFromResponse(Response response, String remotePath) {
BrowserFile browserFile = new BrowserFile();
browserFile.setPath(Uri.decode(remotePath));
browserFile.setDisplayName(Uri.decode(new File(remotePath).getName()));
final List<Property> properties = response.getProperties();
for (Property property : properties) {
if (property instanceof OCId) {
browserFile.setRemoteId(((OCId) property).getOcId());
}
if (property instanceof ResourceType) {
browserFile.isFile =
!(((ResourceType) property).getTypes().contains(ResourceType.Companion.getCOLLECTION()));
}
if (property instanceof GetLastModified) {
browserFile.setModifiedTimestamp(((GetLastModified) property).getLastModified());
}
if (property instanceof GetContentType) {
browserFile.setMimeType(((GetContentType) property).getType());
}
if (property instanceof OCSize) {
browserFile.setSize(((OCSize) property).getOcSize());
}
if (property instanceof NCPreview) {
browserFile.setHasPreview(((NCPreview) property).isNcPreview());
}
if (property instanceof OCFavorite) {
browserFile.setFavorite(((OCFavorite) property).isOcFavorite());
}
if (property instanceof DisplayName) {
browserFile.setDisplayName(((DisplayName) property).getDisplayName());
}
if (property instanceof NCEncrypted) {
browserFile.setEncrypted(((NCEncrypted) property).isNcEncrypted());
}
if (property instanceof NCPermission) {
browserFile.setPermissions(((NCPermission) property).getNcPermission());
}
}
if (browserFile.getPermissions() != null && browserFile.getPermissions().contains("R")) {
browserFile.isAllowedToReShare = true;
}
if (TextUtils.isEmpty(browserFile.getMimeType()) && !browserFile.isFile()) {
browserFile.setMimeType("inode/directory");
}
return browserFile;
}
public String getPath() {
return this.path;
}
public String getDisplayName() {
return this.displayName;
}
public String getMimeType() {
return this.mimeType;
}
public long getModifiedTimestamp() {
return this.modifiedTimestamp;
}
public long getSize() {
return this.size;
}
public boolean isFile() {
return this.isFile;
}
public String getRemoteId() {
return this.remoteId;
}
public boolean isHasPreview() {
return this.hasPreview;
}
public boolean isFavorite() {
return this.favorite;
}
public boolean isEncrypted() {
return this.encrypted;
}
public String getPermissions() {
return this.permissions;
}
public boolean isAllowedToReShare() {
return this.isAllowedToReShare;
}
public void setPath(String path) {
this.path = path;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public void setModifiedTimestamp(long modifiedTimestamp) {
this.modifiedTimestamp = modifiedTimestamp;
}
public void setSize(long size) {
this.size = size;
}
public void setFile(boolean isFile) {
this.isFile = isFile;
}
public void setRemoteId(String remoteId) {
this.remoteId = remoteId;
}
public void setHasPreview(boolean hasPreview) {
this.hasPreview = hasPreview;
}
public void setFavorite(boolean favorite) {
this.favorite = favorite;
}
public void setEncrypted(boolean encrypted) {
this.encrypted = encrypted;
}
public void setPermissions(String permissions) {
this.permissions = permissions;
}
public void setAllowedToReShare(boolean isAllowedToReShare) {
this.isAllowedToReShare = isAllowedToReShare;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof BrowserFile)) {
return false;
}
final BrowserFile other = (BrowserFile) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$path = this.getPath();
final Object other$path = other.getPath();
if (this$path == null ? other$path != null : !this$path.equals(other$path)) {
return false;
}
final Object this$displayName = this.getDisplayName();
final Object other$displayName = other.getDisplayName();
if (this$displayName == null ? other$displayName != null : !this$displayName.equals(other$displayName)) {
return false;
}
final Object this$mimeType = this.getMimeType();
final Object other$mimeType = other.getMimeType();
if (this$mimeType == null ? other$mimeType != null : !this$mimeType.equals(other$mimeType)) {
return false;
}
if (this.getModifiedTimestamp() != other.getModifiedTimestamp()) {
return false;
}
if (this.getSize() != other.getSize()) {
return false;
}
if (this.isFile() != other.isFile()) {
return false;
}
final Object this$remoteId = this.getRemoteId();
final Object other$remoteId = other.getRemoteId();
if (this$remoteId == null ? other$remoteId != null : !this$remoteId.equals(other$remoteId)) {
return false;
}
if (this.isHasPreview() != other.isHasPreview()) {
return false;
}
if (this.isFavorite() != other.isFavorite()) {
return false;
}
if (this.isEncrypted() != other.isEncrypted()) {
return false;
}
final Object this$permissions = this.getPermissions();
final Object other$permissions = other.getPermissions();
if (this$permissions == null ? other$permissions != null : !this$permissions.equals(other$permissions)) {
return false;
}
return this.isAllowedToReShare() == other.isAllowedToReShare();
}
protected boolean canEqual(final Object other) {
return other instanceof BrowserFile;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $path = this.getPath();
result = result * PRIME + ($path == null ? 43 : $path.hashCode());
final Object $displayName = this.getDisplayName();
result = result * PRIME + ($displayName == null ? 43 : $displayName.hashCode());
final Object $mimeType = this.getMimeType();
result = result * PRIME + ($mimeType == null ? 43 : $mimeType.hashCode());
final long $modifiedTimestamp = this.getModifiedTimestamp();
result = result * PRIME + (int) ($modifiedTimestamp >>> 32 ^ $modifiedTimestamp);
final long $size = this.getSize();
result = result * PRIME + (int) ($size >>> 32 ^ $size);
result = result * PRIME + (this.isFile() ? 79 : 97);
final Object $remoteId = this.getRemoteId();
result = result * PRIME + ($remoteId == null ? 43 : $remoteId.hashCode());
result = result * PRIME + (this.isHasPreview() ? 79 : 97);
result = result * PRIME + (this.isFavorite() ? 79 : 97);
result = result * PRIME + (this.isEncrypted() ? 79 : 97);
final Object $permissions = this.getPermissions();
result = result * PRIME + ($permissions == null ? 43 : $permissions.hashCode());
result = result * PRIME + (this.isAllowedToReShare() ? 79 : 97);
return result;
}
public String toString() {
return "BrowserFile(path=" + this.getPath() + ", displayName=" + this.getDisplayName() + ", mimeType=" + this.getMimeType() + ", modifiedTimestamp=" + this.getModifiedTimestamp() + ", size=" + this.getSize() + ", isFile=" + this.isFile() + ", remoteId=" + this.getRemoteId() + ", hasPreview=" + this.isHasPreview() + ", favorite=" + this.isFavorite() + ", encrypted=" + this.isEncrypted() + ", permissions=" + this.getPermissions() + ", isAllowedToReShare=" + this.isAllowedToReShare() + ")";
}
}

View File

@ -0,0 +1,118 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.components.filebrowser.models
import android.net.Uri
import android.os.Parcelable
import android.text.TextUtils
import at.bitfire.dav4jvm.Property
import at.bitfire.dav4jvm.Response
import at.bitfire.dav4jvm.property.DisplayName
import at.bitfire.dav4jvm.property.GetContentType
import at.bitfire.dav4jvm.property.GetLastModified
import at.bitfire.dav4jvm.property.ResourceType
import at.bitfire.dav4jvm.property.ResourceType.Companion.COLLECTION
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.components.filebrowser.models.properties.NCEncrypted
import com.nextcloud.talk.components.filebrowser.models.properties.NCPermission
import com.nextcloud.talk.components.filebrowser.models.properties.NCPreview
import com.nextcloud.talk.components.filebrowser.models.properties.OCFavorite
import com.nextcloud.talk.components.filebrowser.models.properties.OCId
import com.nextcloud.talk.components.filebrowser.models.properties.OCSize
import kotlinx.android.parcel.Parcelize
import java.io.File
@Parcelize
@JsonObject
data class BrowserFile(
var path: String? = null,
var displayName: String? = null,
var mimeType: String? = null,
var modifiedTimestamp: Long = 0,
var size: Long = 0,
var isFile: Boolean = false,
// Used for remote files
var remoteId: String? = null,
var hasPreview: Boolean = false,
var isFavorite: Boolean = false,
var isEncrypted: Boolean = false,
var permissions: String? = null,
var isAllowedToReShare: Boolean = false
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null, 0, 0, false, null, false, false, false, null, false)
companion object {
fun getModelFromResponse(response: Response, remotePath: String): BrowserFile {
val browserFile = BrowserFile()
browserFile.path = Uri.decode(remotePath)
browserFile.displayName = Uri.decode(File(remotePath).name)
val properties = response.properties
for (property in properties) {
mapPropertyToBrowserFile(property, browserFile)
}
if (browserFile.permissions != null && browserFile.permissions!!.contains("R")) {
browserFile.isAllowedToReShare = true
}
if (TextUtils.isEmpty(browserFile.mimeType) && !browserFile.isFile) {
browserFile.mimeType = "inode/directory"
}
return browserFile
}
@Suppress("Detekt.ComplexMethod")
private fun mapPropertyToBrowserFile(property: Property, browserFile: BrowserFile) {
when (property) {
is OCId -> {
browserFile.remoteId = property.ocId
}
is ResourceType -> {
browserFile.isFile = !property.types.contains(COLLECTION)
}
is GetLastModified -> {
browserFile.modifiedTimestamp = property.lastModified
}
is GetContentType -> {
browserFile.mimeType = property.type
}
is OCSize -> {
browserFile.size = property.ocSize
}
is NCPreview -> {
browserFile.hasPreview = property.isNcPreview
}
is OCFavorite -> {
browserFile.isFavorite = property.isOcFavorite
}
is DisplayName -> {
browserFile.displayName = property.displayName
}
is NCEncrypted -> {
browserFile.isEncrypted = property.isNcEncrypted
}
is NCPermission -> {
browserFile.permissions = property.ncPermission
}
}
}
}
}

View File

@ -94,10 +94,10 @@ public class ReadFilesystemOperation {
Log.w("", "Error reading remote path");
}
remoteFiles.add(BrowserFile.getModelFromResponse(rootElement[0],
remoteFiles.add(BrowserFile.Companion.getModelFromResponse(rootElement[0],
rootElement[0].getHref().toString().substring(basePath.length())));
for (Response memberElement : memberElements) {
remoteFiles.add(BrowserFile.getModelFromResponse(memberElement,
remoteFiles.add(BrowserFile.Companion.getModelFromResponse(memberElement,
memberElement.getHref().toString().substring(basePath.length())));
}

View File

@ -336,10 +336,10 @@ class ChatController(args: Bundle) :
@Suppress("Detekt.TooGenericExceptionCaught")
override fun onNext(roomOverall: RoomOverall) {
Log.d(TAG, "getRoomInfo - getRoom - got response: " + startNanoTime)
currentConversation = roomOverall.ocs.data
currentConversation = roomOverall.ocs!!.data
Log.d(
TAG,
"getRoomInfo. token: " + currentConversation?.getToken() +
"getRoomInfo. token: " + currentConversation?.token +
" sessionId: " + currentConversation?.sessionId
)
loadAvatarForStatusBar()
@ -401,7 +401,7 @@ class ChatController(args: Bundle) :
override fun onNext(roomsOverall: RoomsOverall) {
Log.d(TAG, "handleFromNotification - getRooms - got response")
for (conversation in roomsOverall.ocs.data) {
for (conversation in roomsOverall.ocs!!.data!!) {
if (roomId == conversation.roomId) {
roomToken = conversation.token
currentConversation = conversation
@ -548,7 +548,7 @@ class ChatController(args: Bundle) :
if (!conversationUser?.userId.equals("?")) {
senderId = "users/" + conversationUser?.userId
} else {
senderId = currentConversation?.getActorType() + "/" + currentConversation?.getActorId()
senderId = currentConversation?.actorType + "/" + currentConversation?.actorId
}
Log.d(TAG, "Initialize TalkMessagesListAdapter with senderId: " + senderId)
@ -579,7 +579,7 @@ class ChatController(args: Bundle) :
adapter?.registerViewClickListener(
R.id.playPauseBtn
) { view, message ->
val filename = message.getSelectedIndividualHashMap()["name"]
val filename = message.selectedIndividualHashMap!!["name"]
val file = File(context!!.cacheDir, filename!!)
if (file.exists()) {
if (message.isPlayingVoiceMessage) {
@ -934,7 +934,7 @@ class ChatController(args: Bundle) :
}
if (mediaPlayer == null) {
val fileName = message.getSelectedIndividualHashMap()["name"]
val fileName = message.selectedIndividualHashMap!!["name"]
val absolutePath = context!!.cacheDir.absolutePath + "/" + fileName
mediaPlayer = MediaPlayer().apply {
setDataSource(absolutePath)
@ -978,17 +978,17 @@ class ChatController(args: Bundle) :
message.isDownloadingVoiceMessage = true
adapter?.update(message)
val baseUrl = message.activeUser.baseUrl
val userId = message.activeUser.userId
val baseUrl = message.activeUser!!.baseUrl
val userId = message.activeUser!!.userId
val attachmentFolder = CapabilitiesUtil.getAttachmentFolder(message.activeUser)
val fileName = message.getSelectedIndividualHashMap()["name"]
var size = message.getSelectedIndividualHashMap()["size"]
val fileName = message.selectedIndividualHashMap!!["name"]
var size = message.selectedIndividualHashMap!!["size"]
if (size == null) {
size = "-1"
}
val fileSize = size.toLong()
val fileId = message.getSelectedIndividualHashMap()["id"]
val path = message.getSelectedIndividualHashMap()["path"]
val fileId = message.selectedIndividualHashMap!!["id"]
val path = message.selectedIndividualHashMap!!["path"]
// check if download worker is already running
val workers = WorkManager.getInstance(
@ -1223,7 +1223,7 @@ class ChatController(args: Bundle) :
private fun shouldShowLobby(): Boolean {
if (currentConversation != null) {
return currentConversation?.shouldShowLobby(conversationUser) == true
return currentConversation?.shouldShowLobby(conversationUser!!) == true
}
return false
}
@ -1262,7 +1262,7 @@ class ChatController(args: Bundle) :
private fun checkLobbyState() {
if (currentConversation != null &&
currentConversation?.isLobbyViewApplicable(conversationUser) ?: false &&
currentConversation?.isLobbyViewApplicable(conversationUser!!) ?: false &&
isAlive()
) {
@ -1270,7 +1270,7 @@ class ChatController(args: Bundle) :
getRoomInfo()
}
if (currentConversation?.shouldShowLobby(conversationUser) ?: false) {
if (currentConversation?.shouldShowLobby(conversationUser!!) ?: false) {
binding.lobby.lobbyView.visibility = View.VISIBLE
binding.messagesListView.visibility = View.GONE
binding.messageInputView.visibility = View.GONE
@ -1792,7 +1792,7 @@ class ChatController(args: Bundle) :
override fun onNext(roomOverall: RoomOverall) {
Log.d(TAG, "joinRoomWithPassword - joinRoom - got response: " + startNanoTime)
inConversation = true
currentConversation?.sessionId = roomOverall.ocs.data.sessionId
currentConversation?.sessionId = roomOverall.ocs!!.data!!.sessionId
Log.d(TAG, "joinRoomWithPassword - sessionId: " + currentConversation?.sessionId)
ApplicationWideCurrentRoomHolder.getInstance().session =
@ -2026,7 +2026,7 @@ class ChatController(args: Bundle) :
}
pullChatMessagesPending = true
if (currentConversation != null && currentConversation!!.shouldShowLobby(conversationUser)) {
if (currentConversation != null && currentConversation!!.shouldShowLobby(conversationUser!!)) {
// return
}
@ -2181,7 +2181,7 @@ class ChatController(args: Bundle) :
if (response.code() == HTTP_CODE_OK) {
val chatOverall = response.body() as ChatOverall?
val chatMessageList = handleSystemMessages(chatOverall?.ocs!!.data)
val chatMessageList = handleSystemMessages(chatOverall?.ocs!!.data!!)
if (chatMessageList.isNotEmpty() &&
ChatMessage.SystemMessageType.CLEARED_CHAT == chatMessageList[0].systemMessageType
@ -2455,19 +2455,19 @@ class ChatController(args: Bundle) :
// setDeletionFlagsAndRemoveInfomessages
if (isInfoMessageAboutDeletion(currentMessage)) {
if (!chatMessageMap.containsKey(currentMessage.value.parentMessage.id)) {
if (!chatMessageMap.containsKey(currentMessage.value.parentMessage!!.id)) {
// if chatMessageMap doesn't contain message to delete (this happens when lookingIntoFuture),
// the message to delete has to be modified directly inside the adapter
setMessageAsDeleted(currentMessage.value.parentMessage)
} else {
chatMessageMap[currentMessage.value.parentMessage.id]!!.isDeleted = true
chatMessageMap[currentMessage.value.parentMessage!!.id]!!.isDeleted = true
}
chatMessageIterator.remove()
}
// delete reactions system messages
else if (isReactionsMessage(currentMessage)) {
if (!chatMessageMap.containsKey(currentMessage.value.parentMessage.id)) {
if (!chatMessageMap.containsKey(currentMessage.value.parentMessage!!.id)) {
updateAdapterForReaction(currentMessage.value.parentMessage)
}
@ -2569,7 +2569,7 @@ class ChatController(args: Bundle) :
}
private fun isSystemMessage(message: ChatMessage): Boolean {
return ChatMessage.MessageType.SYSTEM_MESSAGE == message.getMessageType()
return ChatMessage.MessageType.SYSTEM_MESSAGE == message.getCalculateMessageType()
}
fun deleteMessage(message: IMessage?) {
@ -2603,7 +2603,7 @@ class ChatController(args: Bundle) :
}
override fun onNext(t: ChatOverallSingleMessage) {
if (t.ocs.meta.statusCode == HttpURLConnection.HTTP_ACCEPTED) {
if (t.ocs!!.meta!!.statusCode == HttpURLConnection.HTTP_ACCEPTED) {
Toast.makeText(
context, R.string.nc_delete_message_leaked_to_matterbridge,
Toast.LENGTH_LONG
@ -2641,7 +2641,7 @@ class ChatController(args: Bundle) :
)
ncApi!!.createRoom(
credentials,
retrofitBucket.getUrl(), retrofitBucket.getQueryMap()
retrofitBucket.url, retrofitBucket.queryMap
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -2653,15 +2653,15 @@ class ChatController(args: Bundle) :
override fun onNext(roomOverall: RoomOverall) {
val bundle = Bundle()
bundle.putParcelable(KEY_USER_ENTITY, conversationUser)
bundle.putString(KEY_ROOM_TOKEN, roomOverall.getOcs().getData().getToken())
bundle.putString(KEY_ROOM_ID, roomOverall.getOcs().getData().getRoomId())
bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token)
bundle.putString(KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId)
// FIXME once APIv2+ is used only, the createRoom already returns all the data
ncApi!!.getRoom(
credentials,
ApiUtils.getUrlForRoom(
apiVersion, conversationUser?.baseUrl,
roomOverall.getOcs().getData().getToken()
roomOverall.ocs!!.data!!.token
)
)
.subscribeOn(Schedulers.io())
@ -2674,11 +2674,11 @@ class ChatController(args: Bundle) :
override fun onNext(roomOverall: RoomOverall) {
bundle.putParcelable(
KEY_ACTIVE_CONVERSATION,
Parcels.wrap(roomOverall.getOcs().getData())
Parcels.wrap(roomOverall.ocs!!.data!!)
)
remapChatController(
router, conversationUser!!.id,
roomOverall.getOcs().getData().getToken(), bundle, true
roomOverall.ocs!!.data!!.token!!, bundle, true
)
}
@ -2767,9 +2767,9 @@ class ChatController(args: Bundle) :
message.user.id.substring(ACTOR_LENGTH) != currentConversation?.actorId &&
currentConversation?.type != Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL ||
isShowMessageDeletionButton(message) || // delete
ChatMessage.MessageType.REGULAR_TEXT_MESSAGE == message.getMessageType() || // forward
ChatMessage.MessageType.REGULAR_TEXT_MESSAGE == message.getCalculateMessageType() || // forward
message.previousMessageId > NO_PREVIOUS_MESSAGE_ID && // mark as unread
ChatMessage.MessageType.SYSTEM_MESSAGE != message.getMessageType() &&
ChatMessage.MessageType.SYSTEM_MESSAGE != message.getCalculateMessageType() &&
BuildConfig.DEBUG
}
@ -2867,12 +2867,12 @@ class ChatController(args: Bundle) :
message.reactionsSelf = ArrayList<String>()
}
var amount = message.reactions[emoji]
var amount = message.reactions!![emoji]
if (amount == null) {
amount = 0
}
message.reactions[emoji] = amount + 1
message.reactionsSelf.add(emoji)
message.reactions!![emoji] = amount + 1
message.reactionsSelf!!.add(emoji)
adapter?.update(message)
}
@ -2905,7 +2905,7 @@ class ChatController(args: Bundle) :
override fun hasContentFor(message: ChatMessage, type: Byte): Boolean {
return when (type) {
CONTENT_TYPE_LOCATION -> message.hasGeoLocation()
CONTENT_TYPE_VOICE_MESSAGE -> message.isVoiceMessage()
CONTENT_TYPE_VOICE_MESSAGE -> message.isVoiceMessage
CONTENT_TYPE_SYSTEM_MESSAGE -> !TextUtils.isEmpty(message.systemMessage)
CONTENT_TYPE_UNREAD_NOTICE_MESSAGE -> message.id == "-1"
else -> false
@ -2968,19 +2968,19 @@ class ChatController(args: Bundle) :
val conversationIntent = Intent(activity, CallActivity::class.java)
val bundle = Bundle()
bundle.putParcelable(KEY_USER_ENTITY, conversationUser)
bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs.data.token)
bundle.putString(KEY_ROOM_ID, roomOverall.ocs.data.roomId)
bundle.putString(KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token)
bundle.putString(KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId)
if (conversationUser != null) {
bundle.putParcelable(
KEY_ACTIVE_CONVERSATION,
Parcels.wrap(roomOverall.ocs.data)
Parcels.wrap(roomOverall.ocs!!.data)
)
conversationIntent.putExtras(bundle)
ConductorRemapping.remapChatController(
router, conversationUser.id,
roomOverall.ocs.data.token, bundle, false
roomOverall.ocs!!.data!!.token!!, bundle, false
)
} else {
conversationIntent.putExtras(bundle)

View File

@ -252,7 +252,7 @@ class ContactsController(args: Bundle) :
)
ncApi.createRoom(
credentials,
retrofitBucket.getUrl(), retrofitBucket.getQueryMap()
retrofitBucket.url, retrofitBucket.queryMap
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -263,15 +263,15 @@ class ContactsController(args: Bundle) :
override fun onNext(roomOverall: RoomOverall) {
val bundle = Bundle()
bundle.putParcelable(BundleKeys.KEY_USER_ENTITY, currentUser)
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.getOcs().getData().getToken())
bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.getOcs().getData().getRoomId())
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token)
bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId)
// FIXME once APIv2 or later is used only, the createRoom already returns all the data
ncApi.getRoom(
credentials,
ApiUtils.getUrlForRoom(
apiVersion, currentUser!!.baseUrl,
roomOverall.getOcs().getData().getToken()
roomOverall.ocs!!.data!!.token
)
)
.subscribeOn(Schedulers.io())
@ -283,11 +283,11 @@ class ContactsController(args: Bundle) :
override fun onNext(roomOverall: RoomOverall) {
bundle.putParcelable(
BundleKeys.KEY_ACTIVE_CONVERSATION,
Parcels.wrap(roomOverall.getOcs().getData())
Parcels.wrap(roomOverall.ocs!!.data!!)
)
ConductorRemapping.remapChatController(
router, currentUser!!.id,
roomOverall.getOcs().getData().getToken(), bundle, true
roomOverall.ocs!!.data!!.token!!, bundle, true
)
}
@ -393,7 +393,7 @@ class ContactsController(args: Bundle) :
val query = adapter!!.getFilter(String::class.java) as String?
val retrofitBucket: RetrofitBucket =
ApiUtils.getRetrofitBucketForContactsSearchFor14(currentUser!!.baseUrl, query)
val modifiedQueryMap: HashMap<String, Any?> = HashMap<String, Any?>(retrofitBucket.getQueryMap())
val modifiedQueryMap: HashMap<String, Any?> = HashMap<String, Any?>(retrofitBucket.queryMap)
modifiedQueryMap.put("limit", CONTACTS_BATCH_SIZE)
if (isAddingParticipantsView) {
modifiedQueryMap.put("itemId", conversationToken)
@ -417,7 +417,7 @@ class ContactsController(args: Bundle) :
modifiedQueryMap.put("shareTypes[]", shareTypesList)
ncApi.getContactsWithSearchParam(
credentials,
retrofitBucket.getUrl(), shareTypesList, modifiedQueryMap
retrofitBucket.url, shareTypesList, modifiedQueryMap
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -752,7 +752,7 @@ class ContactsController(args: Bundle) :
fun onMessageEvent(openConversationEvent: OpenConversationEvent) {
ConductorRemapping.remapChatController(
router, currentUser!!.id,
openConversationEvent.conversation!!.getToken(),
openConversationEvent.conversation!!.token!!,
openConversationEvent.bundle!!, true
)
contactsBottomDialog?.dismiss()
@ -815,7 +815,7 @@ class ContactsController(args: Bundle) :
)
ncApi.createRoom(
credentials,
retrofitBucket.getUrl(), retrofitBucket.getQueryMap()
retrofitBucket.url, retrofitBucket.queryMap
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -827,16 +827,16 @@ class ContactsController(args: Bundle) :
if (activity != null) {
val bundle = Bundle()
bundle.putParcelable(BundleKeys.KEY_USER_ENTITY, currentUser)
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.getOcs().getData().getToken())
bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.getOcs().getData().getRoomId())
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token)
bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId)
bundle.putParcelable(
BundleKeys.KEY_ACTIVE_CONVERSATION,
Parcels.wrap(roomOverall.getOcs().getData())
Parcels.wrap(roomOverall.ocs!!.data!!)
)
ConductorRemapping.remapChatController(
router,
currentUser!!.id,
roomOverall.getOcs().getData().getToken(),
roomOverall.ocs!!.data!!.token!!,
bundle,
true
)

View File

@ -208,7 +208,7 @@ class ConversationInfoController(args: Bundle) :
private fun setupWebinaryView() {
if (CapabilitiesUtil.hasSpreedFeatureCapability(conversationUser, "webinary-lobby") &&
webinaryRoomType(conversation!!) &&
conversation!!.canModerate(conversationUser)
conversation!!.canModerate(conversationUser!!)
) {
binding.webinarInfoView.webinarSettings.visibility = View.VISIBLE
@ -223,7 +223,7 @@ class ConversationInfoController(args: Bundle) :
MaterialDialog(activity!!, BottomSheet(WRAP_CONTENT)).show {
val currentTimeCalendar = Calendar.getInstance()
if (conversation!!.lobbyTimer != null && conversation!!.lobbyTimer != 0L) {
currentTimeCalendar.timeInMillis = conversation!!.lobbyTimer * DateConstants.SECOND_DIVIDER
currentTimeCalendar.timeInMillis = conversation!!.lobbyTimer!! * DateConstants.SECOND_DIVIDER
}
dateTimePicker(
@ -278,7 +278,7 @@ class ConversationInfoController(args: Bundle) :
) {
binding.webinarInfoView.startTimePreferences.setSummary(
DateUtils.getLocalDateStringFromTimestampForLobby(
conversation!!.lobbyTimer
conversation!!.lobbyTimer!!
)
)
} else {
@ -618,7 +618,7 @@ class ConversationInfoController(args: Bundle) :
@Suppress("Detekt.TooGenericExceptionCaught")
override fun onNext(roomOverall: RoomOverall) {
try {
conversation = roomOverall.ocs.data
conversation = roomOverall.ocs!!.data
val conversationCopy = conversation
@ -639,7 +639,7 @@ class ConversationInfoController(args: Bundle) :
setupWebinaryView()
if (!conversation!!.canLeave(conversationUser)) {
if (!conversation!!.canLeave()) {
binding.leaveConversationAction.visibility = View.GONE
} else {
binding.leaveConversationAction.visibility = View.VISIBLE
@ -670,7 +670,7 @@ class ConversationInfoController(args: Bundle) :
binding.displayNameText.text = conversation!!.displayName
if (conversation!!.description != null && !conversation!!.description.isEmpty()) {
if (conversation!!.description != null && !conversation!!.description!!.isEmpty()) {
binding.descriptionText.text = conversation!!.description
binding.conversationDescription.visibility = View.VISIBLE
}
@ -979,7 +979,7 @@ class ConversationInfoController(args: Bundle) :
}
override fun onItemClick(view: View?, position: Int): Boolean {
if (!conversation!!.canModerate(conversationUser)) {
if (!conversation!!.canModerate(conversationUser!!)) {
return true
}

View File

@ -561,8 +561,10 @@ public class ConversationsListController extends BaseController implements Searc
}
for (Conversation conversation : roomsOverall.getOcs().getData()) {
if (bundle.containsKey(BundleKeys.INSTANCE.getKEY_FORWARD_HIDE_SOURCE_ROOM()) && conversation.roomId.equals(bundle.getString(
BundleKeys.INSTANCE.getKEY_FORWARD_HIDE_SOURCE_ROOM()))) {
if (bundle.containsKey(BundleKeys.INSTANCE.getKEY_FORWARD_HIDE_SOURCE_ROOM()) &&
conversation.getRoomId().equals(bundle.getString(
BundleKeys.INSTANCE.getKEY_FORWARD_HIDE_SOURCE_ROOM()))
) {
continue;
}
@ -581,7 +583,7 @@ public class ConversationsListController extends BaseController implements Searc
conversation,
currentUser,
getActivity(),
userStatuses.get(conversation.name));
userStatuses.get(conversation.getName()));
conversationItems.add(conversationItem);
ConversationItem conversationItemWithHeader = new ConversationItem(
@ -589,7 +591,7 @@ public class ConversationsListController extends BaseController implements Searc
currentUser,
getActivity(),
callHeaderItems.get(headerTitle),
userStatuses.get(conversation.name));
userStatuses.get(conversation.getName()));
conversationItemsWithHeader.add(conversationItemWithHeader);
}
}
@ -628,7 +630,7 @@ public class ConversationsListController extends BaseController implements Searc
Conversation conversation1 = ((ConversationItem) o1).getModel();
Conversation conversation2 = ((ConversationItem) o2).getModel();
return new CompareToBuilder()
.append(conversation2.isFavorite(), conversation1.isFavorite())
.append(conversation2.getFavorite(), conversation1.getFavorite())
.append(conversation2.getLastActivity(), conversation1.getLastActivity())
.toComparison();
});
@ -662,7 +664,7 @@ public class ConversationsListController extends BaseController implements Searc
currentUser,
getActivity(),
callHeaderItems.get(headerTitle),
userStatuses.get(conversation.name));
userStatuses.get(conversation.getName()));
openConversationItems.add(conversationItem);
}
@ -770,9 +772,9 @@ public class ConversationsListController extends BaseController implements Searc
for (AbstractFlexibleItem flexItem : conversationItems) {
Conversation conversationItem = ((ConversationItem) flexItem).getModel();
int position = adapter.getGlobalPositionOf(flexItem);
if ((conversationItem.unreadMention ||
(conversationItem.unreadMessages > 0 &&
conversationItem.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL)) &&
if ((conversationItem.getUnreadMention() ||
(conversationItem.getUnreadMessages() > 0 &&
conversationItem.getType() == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL)) &&
position > lastVisibleItem) {
nextUnreadConversationScrollPosition = position;
if (!newMentionPopupBubble.isShown()) {
@ -874,7 +876,7 @@ public class ConversationsListController extends BaseController implements Searc
if (selectedConversation != null && getActivity() != null) {
boolean hasChatPermission =
new AttendeePermissionsUtil(selectedConversation.permissions).hasChatPermission(currentUser);
new AttendeePermissionsUtil(selectedConversation.getPermissions()).hasChatPermission(currentUser);
if (showShareToScreen) {
if (hasChatPermission && !isReadOnlyConversation(selectedConversation)) {
@ -902,7 +904,7 @@ public class ConversationsListController extends BaseController implements Searc
}
private Boolean isReadOnlyConversation(Conversation conversation) {
return conversation.conversationReadOnlyState ==
return conversation.getConversationReadOnlyState() ==
Conversation.ConversationReadOnlyState.CONVERSATION_READ_ONLY;
}

View File

@ -119,16 +119,16 @@ class RingtoneSelectionController(args: Bundle) :
try {
val ringtoneSettings: RingtoneSettings =
LoganSquare.parse<RingtoneSettings>(preferencesString, RingtoneSettings::class.java)
if (ringtoneSettings.getRingtoneUri() == null) {
if (ringtoneSettings.ringtoneUri == null) {
adapter!!.toggleSelection(0)
} else if (ringtoneSettings.getRingtoneUri().toString() == ringtoneString) {
} else if (ringtoneSettings.ringtoneUri!!.toString() == ringtoneString) {
adapter!!.toggleSelection(1)
} else {
var notificationSoundItem: NotificationSoundItem?
for (i in 2 until adapter!!.itemCount) {
notificationSoundItem = adapter!!.getItem(i) as NotificationSoundItem?
if (
notificationSoundItem!!.notificationSoundUri == ringtoneSettings.getRingtoneUri().toString()
notificationSoundItem!!.notificationSoundUri == ringtoneSettings.ringtoneUri!!.toString()
) {
adapter!!.toggleSelection(i)
break
@ -199,8 +199,8 @@ class RingtoneSelectionController(args: Bundle) :
}
if (adapter!!.selectedPositions.size == 0 || adapter!!.selectedPositions[0] != position) {
val ringtoneSettings = RingtoneSettings()
ringtoneSettings.setRingtoneName(notificationSoundItem.notificationSoundName)
ringtoneSettings.setRingtoneUri(ringtoneUri)
ringtoneSettings.ringtoneName = notificationSoundItem.notificationSoundName
ringtoneSettings.ringtoneUri = ringtoneUri
if (callNotificationSounds) {
try {
appPreferences!!.callRingtoneUri = LoganSquare.serialize(ringtoneSettings)

View File

@ -103,7 +103,7 @@ class EntryMenuController(args: Bundle) :
super.onViewBound(view)
if (conversation != null && operation === ConversationOperationEnum.OPS_CODE_RENAME_ROOM) {
binding.textEdit.setText(conversation!!.getName())
binding.textEdit.setText(conversation!!.name)
}
binding.textEdit.setOnEditorActionListener { v, actionId, event ->
@ -127,7 +127,7 @@ class EntryMenuController(args: Bundle) :
override fun afterTextChanged(s: Editable) {
if (!TextUtils.isEmpty(s)) {
if (operation === ConversationOperationEnum.OPS_CODE_RENAME_ROOM) {
if (conversation!!.getName() == null || !conversation!!.getName().equals(s.toString())) {
if (conversation!!.name == null || !conversation!!.name.equals(s.toString())) {
if (!binding.okButton.isEnabled) {
binding.okButton.isEnabled = true
binding.okButton.alpha = OPACITY_ENABLED
@ -260,9 +260,9 @@ class EntryMenuController(args: Bundle) :
if (operation === ConversationOperationEnum.OPS_CODE_CHANGE_PASSWORD ||
operation === ConversationOperationEnum.OPS_CODE_SET_PASSWORD
) {
conversation!!.setPassword(binding.textEdit.text.toString())
conversation!!.password = binding.textEdit.text.toString()
} else {
conversation!!.setName(binding.textEdit.text.toString())
conversation!!.name = binding.textEdit.text.toString()
}
bundle.putParcelable(BundleKeys.KEY_ROOM, Parcels.wrap<Any>(conversation))
bundle.putSerializable(BundleKeys.KEY_OPERATION_CODE, operation)

View File

@ -257,9 +257,9 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
ApiUtils.getUrlForSetChatReadMarker(
chatApiVersion(),
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
),
conversation!!.lastMessage.jsonMessageId
conversation!!.lastMessage!!.jsonMessageId
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -273,7 +273,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
ApiUtils.getUrlForRoomPublic(
apiVersion(),
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
)
)
.subscribeOn(Schedulers.io())
@ -284,15 +284,15 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
private fun operationChangePassword() {
var pass: String? = ""
if (conversation!!.getPassword() != null) {
pass = conversation!!.getPassword()
if (conversation!!.password != null) {
pass = conversation!!.password
}
ncApi.setPassword(
credentials,
ApiUtils.getUrlForRoomPassword(
apiVersion(),
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
),
pass
)
@ -308,7 +308,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
ApiUtils.getUrlForRoomPublic(
apiVersion(),
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
)
)
.subscribeOn(Schedulers.io())
@ -323,9 +323,9 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
ApiUtils.getUrlForRoom(
apiVersion(),
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
),
conversation!!.getName()
conversation!!.name
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -342,7 +342,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
ApiUtils.getUrlForRoomFavorite(
apiVersion,
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
)
)
.subscribeOn(Schedulers.io())
@ -355,7 +355,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
ApiUtils.getUrlForRoomFavorite(
apiVersion,
currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
)
)
.subscribeOn(Schedulers.io())
@ -391,7 +391,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
conversationName
)
}
ncApi.createRoom(credentials, retrofitBucket.getUrl(), retrofitBucket.getQueryMap())
ncApi.createRoom(credentials, retrofitBucket.url, retrofitBucket.queryMap)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.retry(1)
@ -401,12 +401,12 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
}
override fun onNext(roomOverall: RoomOverall) {
conversation = roomOverall.getOcs().getData()
conversation = roomOverall.ocs!!.data
ncApi.getRoom(
credentials,
ApiUtils.getUrlForRoom(
apiVersion, currentUser!!.baseUrl,
conversation!!.getToken()
conversation!!.token
)
)
.subscribeOn(Schedulers.io())
@ -419,7 +419,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
override fun onNext(
roomOverall: RoomOverall
) {
conversation = roomOverall.getOcs().getData()
conversation = roomOverall.ocs!!.data
inviteUsersToAConversation()
}
@ -460,8 +460,8 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
}
override fun onNext(roomOverall: RoomOverall) {
conversation = roomOverall.getOcs().getData()
if (conversation!!.isHasPassword && conversation!!.isGuest) {
conversation = roomOverall.ocs!!.data
if (conversation!!.hasPassword && conversation!!.isGuest) {
eventBus.post(ConversationsListFetchDataEvent())
val bundle = Bundle()
bundle.putParcelable(KEY_ROOM, Parcels.wrap(conversation))
@ -504,7 +504,7 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
}
override fun onNext(roomOverall: RoomOverall) {
conversation = roomOverall.getOcs().getData()
conversation = roomOverall.ocs!!.data
initiateConversation()
}
@ -639,10 +639,10 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
retrofitBucket = ApiUtils.getRetrofitBucketForAddParticipant(
apiVersion,
currentUser!!.baseUrl,
conversation!!.getToken(),
conversation!!.token,
userId
)
ncApi.addParticipant(credentials, retrofitBucket.getUrl(), retrofitBucket.getQueryMap())
ncApi.addParticipant(credentials, retrofitBucket.url, retrofitBucket.queryMap)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.retry(1)
@ -683,11 +683,11 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
retrofitBucket = ApiUtils.getRetrofitBucketForAddParticipantWithSource(
apiVersion,
currentUser!!.baseUrl,
conversation!!.getToken(),
conversation!!.token,
"groups",
groupId
)
ncApi.addParticipant(credentials, retrofitBucket.getUrl(), retrofitBucket.getQueryMap())
ncApi.addParticipant(credentials, retrofitBucket.url, retrofitBucket.queryMap)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.retry(1)
@ -718,9 +718,9 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
private fun initiateConversation() {
eventBus.post(ConversationsListFetchDataEvent())
val bundle = Bundle()
bundle.putString(KEY_ROOM_TOKEN, conversation!!.getToken())
bundle.putString(KEY_ROOM_ID, conversation!!.getRoomId())
bundle.putString(KEY_CONVERSATION_NAME, conversation!!.getDisplayName())
bundle.putString(KEY_ROOM_TOKEN, conversation!!.token)
bundle.putString(KEY_ROOM_ID, conversation!!.roomId)
bundle.putString(KEY_CONVERSATION_NAME, conversation!!.displayName)
bundle.putParcelable(KEY_USER_ENTITY, currentUser)
bundle.putParcelable(KEY_ACTIVE_CONVERSATION, Parcels.wrap(conversation))
bundle.putString(KEY_CONVERSATION_PASSWORD, callPassword)
@ -771,11 +771,11 @@ class OperationsMenuController(args: Bundle) : NewBaseController(
}
override fun onNext(roomOverall: RoomOverall) {
conversation = roomOverall.getOcs().getData()
conversation = roomOverall.ocs!!.data
if (operation !== ConversationOperationEnum.OPS_CODE_JOIN_ROOM) {
showResultImage(everythingOK = true, isGuestSupportError = false)
} else {
conversation = roomOverall.getOcs().getData()
conversation = roomOverall.ocs!!.data
initiateConversation()
}
}

View File

@ -170,7 +170,7 @@ public class NotificationWorker extends Worker {
}
}
muteCall = !(conversation.notificationCalls == 1);
muteCall = !(conversation.getNotificationCalls() == 1);
}
@Override
@ -510,7 +510,7 @@ public class NotificationWorker extends Worker {
signatureVerification = pushUtils.verifySignature(base64DecodedSignature,
base64DecodedSubject);
if (signatureVerification.isSignatureValid()) {
if (signatureVerification.getSignatureValid()) {
Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedSubject = cipher.doFinal(base64DecodedSubject);

View File

@ -1,91 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@Parcel
@JsonObject
public class ExternalSignalingServer {
@JsonField(name = "externalSignalingServer")
String externalSignalingServer;
@JsonField(name = "externalSignalingTicket")
String externalSignalingTicket;
public String getExternalSignalingServer() {
return this.externalSignalingServer;
}
public String getExternalSignalingTicket() {
return this.externalSignalingTicket;
}
public void setExternalSignalingServer(String externalSignalingServer) {
this.externalSignalingServer = externalSignalingServer;
}
public void setExternalSignalingTicket(String externalSignalingTicket) {
this.externalSignalingTicket = externalSignalingTicket;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ExternalSignalingServer)) {
return false;
}
final ExternalSignalingServer other = (ExternalSignalingServer) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$externalSignalingServer = this.getExternalSignalingServer();
final Object other$externalSignalingServer = other.getExternalSignalingServer();
if (this$externalSignalingServer == null ? other$externalSignalingServer != null : !this$externalSignalingServer.equals(other$externalSignalingServer)) {
return false;
}
final Object this$externalSignalingTicket = this.getExternalSignalingTicket();
final Object other$externalSignalingTicket = other.getExternalSignalingTicket();
return this$externalSignalingTicket == null ? other$externalSignalingTicket == null : this$externalSignalingTicket.equals(other$externalSignalingTicket);
}
protected boolean canEqual(final Object other) {
return other instanceof ExternalSignalingServer;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $externalSignalingServer = this.getExternalSignalingServer();
result = result * PRIME + ($externalSignalingServer == null ? 43 : $externalSignalingServer.hashCode());
final Object $externalSignalingTicket = this.getExternalSignalingTicket();
result = result * PRIME + ($externalSignalingTicket == null ? 43 : $externalSignalingTicket.hashCode());
return result;
}
public String toString() {
return "ExternalSignalingServer(externalSignalingServer=" + this.getExternalSignalingServer() + ", externalSignalingTicket=" + this.getExternalSignalingTicket() + ")";
}
}

View File

@ -0,0 +1,39 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ExternalSignalingServer(
@JsonField(name = ["externalSignalingServer"])
var externalSignalingServer: String? = null,
@JsonField(name = ["externalSignalingTicket"])
var externalSignalingTicket: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,101 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models;
import org.parceler.Parcel;
@Parcel
public class LoginData {
String serverUrl;
String username;
String token;
public String getServerUrl() {
return this.serverUrl;
}
public String getUsername() {
return this.username;
}
public String getToken() {
return this.token;
}
public void setServerUrl(String serverUrl) {
this.serverUrl = serverUrl;
}
public void setUsername(String username) {
this.username = username;
}
public void setToken(String token) {
this.token = token;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof LoginData)) {
return false;
}
final LoginData other = (LoginData) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$serverUrl = this.getServerUrl();
final Object other$serverUrl = other.getServerUrl();
if (this$serverUrl == null ? other$serverUrl != null : !this$serverUrl.equals(other$serverUrl)) {
return false;
}
final Object this$username = this.getUsername();
final Object other$username = other.getUsername();
if (this$username == null ? other$username != null : !this$username.equals(other$username)) {
return false;
}
final Object this$token = this.getToken();
final Object other$token = other.getToken();
return this$token == null ? other$token == null : this$token.equals(other$token);
}
protected boolean canEqual(final Object other) {
return other instanceof LoginData;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $serverUrl = this.getServerUrl();
result = result * PRIME + ($serverUrl == null ? 43 : $serverUrl.hashCode());
final Object $username = this.getUsername();
result = result * PRIME + ($username == null ? 43 : $username.hashCode());
final Object $token = this.getToken();
result = result * PRIME + ($token == null ? 43 : $token.hashCode());
return result;
}
public String toString() {
return "LoginData(serverUrl=" + this.getServerUrl() + ", username=" + this.getUsername() + ", token=" + this.getToken() + ")";
}
}

View File

@ -0,0 +1,32 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class LoginData(
var serverUrl: String? = null,
var username: String? = null,
var token: String? = null
) : Parcelable

View File

@ -1,86 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models;
import org.parceler.Parcel;
import java.util.Map;
@Parcel
public class RetrofitBucket {
public String url;
public Map<String, String> queryMap;
public String getUrl() {
return this.url;
}
public Map<String, String> getQueryMap() {
return this.queryMap;
}
public void setUrl(String url) {
this.url = url;
}
public void setQueryMap(Map<String, String> queryMap) {
this.queryMap = queryMap;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof RetrofitBucket)) {
return false;
}
final RetrofitBucket other = (RetrofitBucket) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$url = this.getUrl();
final Object other$url = other.getUrl();
if (this$url == null ? other$url != null : !this$url.equals(other$url)) {
return false;
}
final Object this$queryMap = this.getQueryMap();
final Object other$queryMap = other.getQueryMap();
return this$queryMap == null ? other$queryMap == null : this$queryMap.equals(other$queryMap);
}
protected boolean canEqual(final Object other) {
return other instanceof RetrofitBucket;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $url = this.getUrl();
result = result * PRIME + ($url == null ? 43 : $url.hashCode());
final Object $queryMap = this.getQueryMap();
result = result * PRIME + ($queryMap == null ? 43 : $queryMap.hashCode());
return result;
}
public String toString() {
return "RetrofitBucket(url=" + this.getUrl() + ", queryMap=" + this.getQueryMap() + ")";
}
}

View File

@ -0,0 +1,31 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class RetrofitBucket(
var url: String? = null,
var queryMap: Map<String, String>? = null
) : Parcelable

View File

@ -1,98 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models;
import android.net.Uri;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.converters.UriTypeConverter;
import org.parceler.Parcel;
import androidx.annotation.Nullable;
@Parcel
@JsonObject
public class RingtoneSettings {
@JsonField(name = "ringtoneUri", typeConverter = UriTypeConverter.class)
@Nullable
public Uri ringtoneUri;
@JsonField(name = "ringtoneName")
public String ringtoneName;
@Nullable
public Uri getRingtoneUri() {
return this.ringtoneUri;
}
public String getRingtoneName() {
return this.ringtoneName;
}
public void setRingtoneUri(@Nullable Uri ringtoneUri) {
this.ringtoneUri = ringtoneUri;
}
public void setRingtoneName(String ringtoneName) {
this.ringtoneName = ringtoneName;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof RingtoneSettings)) {
return false;
}
final RingtoneSettings other = (RingtoneSettings) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ringtoneUri = this.getRingtoneUri();
final Object other$ringtoneUri = other.getRingtoneUri();
if (this$ringtoneUri == null ? other$ringtoneUri != null : !this$ringtoneUri.equals(other$ringtoneUri)) {
return false;
}
final Object this$ringtoneName = this.getRingtoneName();
final Object other$ringtoneName = other.getRingtoneName();
return this$ringtoneName == null ? other$ringtoneName == null : this$ringtoneName.equals(other$ringtoneName);
}
protected boolean canEqual(final Object other) {
return other instanceof RingtoneSettings;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ringtoneUri = this.getRingtoneUri();
result = result * PRIME + ($ringtoneUri == null ? 43 : $ringtoneUri.hashCode());
final Object $ringtoneName = this.getRingtoneName();
result = result * PRIME + ($ringtoneName == null ? 43 : $ringtoneName.hashCode());
return result;
}
public String toString() {
return "RingtoneSettings(ringtoneUri=" + this.getRingtoneUri() + ", ringtoneName=" + this.getRingtoneName() + ")";
}
}

View File

@ -0,0 +1,41 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models
import android.net.Uri
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.converters.UriTypeConverter
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class RingtoneSettings(
@JsonField(name = ["ringtoneUri"], typeConverter = UriTypeConverter::class)
var ringtoneUri: Uri? = null,
@JsonField(name = ["ringtoneName"])
var ringtoneName: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,85 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models;
import com.nextcloud.talk.models.database.UserEntity;
import org.parceler.Parcel;
@Parcel
public class SignatureVerification {
public boolean signatureValid;
public UserEntity userEntity;
public boolean isSignatureValid() {
return this.signatureValid;
}
public UserEntity getUserEntity() {
return this.userEntity;
}
public void setSignatureValid(boolean signatureValid) {
this.signatureValid = signatureValid;
}
public void setUserEntity(UserEntity userEntity) {
this.userEntity = userEntity;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof SignatureVerification)) {
return false;
}
final SignatureVerification other = (SignatureVerification) o;
if (!other.canEqual((Object) this)) {
return false;
}
if (this.isSignatureValid() != other.isSignatureValid()) {
return false;
}
final Object this$userEntity = this.getUserEntity();
final Object other$userEntity = other.getUserEntity();
return this$userEntity == null ? other$userEntity == null : this$userEntity.equals(other$userEntity);
}
protected boolean canEqual(final Object other) {
return other instanceof SignatureVerification;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
result = result * PRIME + (this.isSignatureValid() ? 79 : 97);
final Object $userEntity = this.getUserEntity();
result = result * PRIME + ($userEntity == null ? 43 : $userEntity.hashCode());
return result;
}
public String toString() {
return "SignatureVerification(signatureValid=" + this.isSignatureValid() + ", userEntity=" + this.getUserEntity() + ")";
}
}

View File

@ -0,0 +1,32 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models
import android.os.Parcelable
import com.nextcloud.talk.models.database.UserEntity
import kotlinx.android.parcel.Parcelize
@Parcelize
data class SignatureVerification(
var signatureValid: Boolean = false,
var userEntity: UserEntity? = null
) : Parcelable

View File

@ -0,0 +1,33 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json
import android.os.Parcel
import kotlinx.android.parcel.Parceler
class AnyParceler : Parceler<Any?> {
override fun create(parcel: Parcel): Any? {
return parcel.readValue(Any::class.java.getClassLoader())
}
override fun Any?.write(parcel: Parcel, flags: Int) {
parcel.writeValue(parcel)
}
}

View File

@ -1,694 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Tim Krüger
* Copyright (C) 2021 Tim Krüger <t@timkrueger.me>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import android.text.TextUtils;
import android.util.Log;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonIgnore;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.converters.EnumSystemMessageTypeConverter;
import com.nextcloud.talk.utils.ApiUtils;
import com.stfalcon.chatkit.commons.models.IUser;
import com.stfalcon.chatkit.commons.models.MessageContentType;
import org.parceler.Parcel;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import androidx.annotation.Nullable;
import kotlin.text.Charsets;
@Parcel
@JsonObject
public class ChatMessage implements MessageContentType, MessageContentType.Image {
private static String TAG = "ChatMessage";
@JsonIgnore
public boolean isGrouped;
@JsonIgnore
public boolean isOneToOneConversation;
@JsonIgnore
public UserEntity activeUser;
@JsonIgnore
public Map<String, String> selectedIndividualHashMap;
@JsonIgnore
public boolean isDeleted;
@JsonField(name = "id")
public int jsonMessageId;
@JsonIgnore
public int previousMessageId = -1;
@JsonField(name = "token")
public String token;
// guests or users
@JsonField(name = "actorType")
public String actorType;
@JsonField(name = "actorId")
public String actorId;
// send when crafting a message
@JsonField(name = "actorDisplayName")
public String actorDisplayName;
@JsonField(name = "timestamp")
public long timestamp;
// send when crafting a message, max 1000 lines
@JsonField(name = "message")
public String message;
@JsonField(name = "messageParameters")
public HashMap<String, HashMap<String, String>> messageParameters;
@JsonField(name = "systemMessage", typeConverter = EnumSystemMessageTypeConverter.class)
public SystemMessageType systemMessageType;
@JsonField(name = "isReplyable")
public boolean replyable;
@JsonField(name = "parent")
public ChatMessage parentMessage;
public Enum<ReadStatus> readStatus = ReadStatus.NONE;
@JsonField(name = "messageType")
public String messageType;
@JsonField(name = "reactions")
public LinkedHashMap<String, Integer> reactions;
@JsonField(name = "reactionsSelf")
public ArrayList<String> reactionsSelf;
public boolean isDownloadingVoiceMessage;
public boolean resetVoiceMessage;
public boolean isPlayingVoiceMessage;
public int voiceMessageDuration;
public int voiceMessagePlayedSeconds;
public int voiceMessageDownloadProgress;
@JsonIgnore
List<MessageType> messageTypesToIgnore = Arrays.asList(
MessageType.REGULAR_TEXT_MESSAGE,
MessageType.SYSTEM_MESSAGE,
MessageType.SINGLE_LINK_VIDEO_MESSAGE,
MessageType.SINGLE_LINK_AUDIO_MESSAGE,
MessageType.SINGLE_LINK_MESSAGE,
MessageType.SINGLE_NC_GEOLOCATION_MESSAGE,
MessageType.VOICE_MESSAGE);
public boolean hasFileAttachment() {
if (messageParameters != null && messageParameters.size() > 0) {
for (HashMap.Entry<String, HashMap<String, String>> entry : messageParameters.entrySet()) {
Map<String, String> individualHashMap = entry.getValue();
if (MessageDigest.isEqual(
Objects.requireNonNull(individualHashMap.get("type")).getBytes(Charsets.UTF_8),
("file").getBytes(Charsets.UTF_8))) {
return true;
}
}
}
return false;
}
public boolean hasGeoLocation() {
if (messageParameters != null && messageParameters.size() > 0) {
for (HashMap.Entry<String, HashMap<String, String>> entry : messageParameters.entrySet()) {
Map<String, String> individualHashMap = entry.getValue();
if (MessageDigest.isEqual(
Objects.requireNonNull(individualHashMap.get("type")).getBytes(Charsets.UTF_8),
("geo-location").getBytes(Charsets.UTF_8))) {
return true;
}
}
}
return false;
}
@Nullable
@Override
public String getImageUrl() {
if (messageParameters != null && messageParameters.size() > 0) {
for (HashMap.Entry<String, HashMap<String, String>> entry : messageParameters.entrySet()) {
Map<String, String> individualHashMap = entry.getValue();
if (MessageDigest.isEqual(
Objects.requireNonNull(individualHashMap.get("type")).getBytes(Charsets.UTF_8),
("file").getBytes(Charsets.UTF_8))) {
// TODO: this selectedIndividualHashMap stuff needs to be analyzed and most likely be refactored!
// it just feels wrong to fill this here inside getImageUrl()
selectedIndividualHashMap = individualHashMap;
if (!isVoiceMessage()) {
if (getActiveUser() != null && getActiveUser().getBaseUrl() != null) {
return (ApiUtils.getUrlForFilePreviewWithFileId(
getActiveUser().getBaseUrl(),
individualHashMap.get("id"),
NextcloudTalkApplication.Companion.getSharedApplication().getResources().getDimensionPixelSize(R.dimen.maximum_file_preview_size)));
} else {
Log.e(TAG, "getActiveUser() or getActiveUser().getBaseUrl() were null when trying to " +
"getImageUrl()");
}
}
}
}
}
if (!messageTypesToIgnore.contains(getMessageType())) {
return getMessage().trim();
}
return null;
}
public MessageType getMessageType() {
if (!TextUtils.isEmpty(getSystemMessage())) {
return MessageType.SYSTEM_MESSAGE;
}
if (isVoiceMessage()) {
return MessageType.VOICE_MESSAGE;
}
if (hasFileAttachment()) {
return MessageType.SINGLE_NC_ATTACHMENT_MESSAGE;
}
if (hasGeoLocation()) {
return MessageType.SINGLE_NC_GEOLOCATION_MESSAGE;
}
return MessageType.REGULAR_TEXT_MESSAGE;
}
public Map<String, String> getSelectedIndividualHashMap() {
return selectedIndividualHashMap;
}
public void setSelectedIndividualHashMap(Map<String, String> selectedIndividualHashMap) {
this.selectedIndividualHashMap = selectedIndividualHashMap;
}
@Override
public String getId() {
return Integer.toString(jsonMessageId);
}
@Override
public String getText() {
return ChatUtils.Companion.getParsedMessage(getMessage(), getMessageParameters());
}
public String getLastMessageDisplayText() {
if (getMessageType().equals(MessageType.REGULAR_TEXT_MESSAGE) || getMessageType().equals(MessageType.SYSTEM_MESSAGE) || getMessageType().equals(MessageType.SINGLE_LINK_MESSAGE)) {
return getText();
} else {
if (MessageType.SINGLE_LINK_GIPHY_MESSAGE == getMessageType()
|| MessageType.SINGLE_LINK_TENOR_MESSAGE == getMessageType()
|| MessageType.SINGLE_LINK_GIF_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_a_gif_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_a_gif),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
} else if (MessageType.SINGLE_NC_ATTACHMENT_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_an_attachment_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_an_attachment),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
} else if (MessageType.SINGLE_NC_GEOLOCATION_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_location_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_location),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
} else if (MessageType.VOICE_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_voice_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_voice),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
/*} else if (getMessageType().equals(MessageType.SINGLE_LINK_MESSAGE)) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_a_link_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_a_link),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}*/
} else if (MessageType.SINGLE_LINK_AUDIO_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_an_audio_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_an_audio),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
} else if (MessageType.SINGLE_LINK_VIDEO_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_a_video_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_a_video),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
} else if (MessageType.SINGLE_LINK_IMAGE_MESSAGE == getMessageType()) {
if (getActorId().equals(getActiveUser().getUserId())) {
return (NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_sent_an_image_you));
} else {
return (String.format(NextcloudTalkApplication.Companion.getSharedApplication().getResources().getString(R.string.nc_sent_an_image),
!TextUtils.isEmpty(getActorDisplayName()) ? getActorDisplayName() : NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest)));
}
}
}
return "";
}
@Override
public IUser getUser() {
return new IUser() {
@Override
public String getId() {
return actorType + "/" + actorId;
}
@Override
public String getName() {
if (!TextUtils.isEmpty(actorDisplayName)) {
return actorDisplayName;
}
return NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest);
}
@Override
public String getAvatar() {
if (getActiveUser() == null) {
return null;
} else if (getActorType().equals("users")) {
return ApiUtils.getUrlForAvatar(getActiveUser().getBaseUrl(), actorId, true);
} else if (getActorType().equals("bridged")) {
return ApiUtils.getUrlForAvatar(getActiveUser().getBaseUrl(), "bridge-bot",
true);
} else {
String apiId =
NextcloudTalkApplication.Companion.getSharedApplication().getString(R.string.nc_guest);
if (!TextUtils.isEmpty(getActorDisplayName())) {
apiId = getActorDisplayName();
}
return ApiUtils.getUrlForGuestAvatar(getActiveUser().getBaseUrl(), apiId, true);
}
}
};
}
@Override
public Date getCreatedAt() {
return new Date(timestamp * 1000L);
}
@Override
public String getSystemMessage() {
return new EnumSystemMessageTypeConverter().convertToString(getSystemMessageType());
}
public boolean isGrouped() {
return this.isGrouped;
}
public boolean isOneToOneConversation() {
return this.isOneToOneConversation;
}
public UserEntity getActiveUser() {
return this.activeUser;
}
public boolean isDeleted() {
return this.isDeleted;
}
public int getJsonMessageId() {
return this.jsonMessageId;
}
public String getToken() {
return this.token;
}
public String getActorType() {
return this.actorType;
}
public String getActorId() {
return this.actorId;
}
public String getActorDisplayName() {
return this.actorDisplayName;
}
public long getTimestamp() {
return this.timestamp;
}
public String getMessage() {
return this.message;
}
public HashMap<String, HashMap<String, String>> getMessageParameters() {
return this.messageParameters;
}
public SystemMessageType getSystemMessageType() {
return this.systemMessageType;
}
public boolean isReplyable() {
return this.replyable;
}
public ChatMessage getParentMessage() {
return this.parentMessage;
}
public Enum<ReadStatus> getReadStatus() {
return this.readStatus;
}
public List<MessageType> getMessageTypesToIgnore() {
return this.messageTypesToIgnore;
}
public void setGrouped(boolean isGrouped) {
this.isGrouped = isGrouped;
}
public void setOneToOneConversation(boolean isOneToOneConversation) {
this.isOneToOneConversation = isOneToOneConversation;
}
public void setActiveUser(UserEntity activeUser) {
this.activeUser = activeUser;
}
public void setDeleted(boolean isDeleted) {
this.isDeleted = isDeleted;
}
public void setJsonMessageId(int jsonMessageId) {
this.jsonMessageId = jsonMessageId;
}
public void setToken(String token) {
this.token = token;
}
public void setActorType(String actorType) {
this.actorType = actorType;
}
public void setActorId(String actorId) {
this.actorId = actorId;
}
public void setActorDisplayName(String actorDisplayName) {
this.actorDisplayName = actorDisplayName;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public void setMessage(String message) {
this.message = message;
}
public void setMessageParameters(HashMap<String, HashMap<String, String>> messageParameters) {
this.messageParameters = messageParameters;
}
public void setSystemMessageType(SystemMessageType systemMessageType) {
this.systemMessageType = systemMessageType;
}
public void setReplyable(boolean replyable) {
this.replyable = replyable;
}
public void setParentMessage(ChatMessage parentMessage) {
this.parentMessage = parentMessage;
}
public void setReadStatus(Enum<ReadStatus> readStatus) {
this.readStatus = readStatus;
}
public void setMessageTypesToIgnore(List<MessageType> messageTypesToIgnore) {
this.messageTypesToIgnore = messageTypesToIgnore;
}
public void setMessageType(String messageType) {
this.messageType = messageType;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatMessage)) {
return false;
}
final ChatMessage other = (ChatMessage) o;
if (!other.canEqual((Object) this)) {
return false;
}
if (this.isGrouped() != other.isGrouped()) {
return false;
}
if (this.isOneToOneConversation() != other.isOneToOneConversation()) {
return false;
}
final Object this$activeUser = this.getActiveUser();
final Object other$activeUser = other.getActiveUser();
if (this$activeUser == null ? other$activeUser != null : !this$activeUser.equals(other$activeUser)) {
return false;
}
final Object this$selectedIndividualHashMap = this.getSelectedIndividualHashMap();
final Object other$selectedIndividualHashMap = other.getSelectedIndividualHashMap();
if (this$selectedIndividualHashMap == null ? other$selectedIndividualHashMap != null : !this$selectedIndividualHashMap.equals(other$selectedIndividualHashMap)) {
return false;
}
if (this.isDeleted() != other.isDeleted()) {
return false;
}
if (this.getJsonMessageId() != other.getJsonMessageId()) {
return false;
}
final Object this$token = this.getToken();
final Object other$token = other.getToken();
if (this$token == null ? other$token != null : !this$token.equals(other$token)) {
return false;
}
final Object this$actorType = this.getActorType();
final Object other$actorType = other.getActorType();
if (this$actorType == null ? other$actorType != null : !this$actorType.equals(other$actorType)) {
return false;
}
final Object this$actorId = this.getActorId();
final Object other$actorId = other.getActorId();
if (this$actorId == null ? other$actorId != null : !this$actorId.equals(other$actorId)) {
return false;
}
final Object this$actorDisplayName = this.getActorDisplayName();
final Object other$actorDisplayName = other.getActorDisplayName();
if (this$actorDisplayName == null ? other$actorDisplayName != null : !this$actorDisplayName.equals(other$actorDisplayName)) {
return false;
}
if (this.getTimestamp() != other.getTimestamp()) {
return false;
}
final Object this$message = this.getMessage();
final Object other$message = other.getMessage();
if (this$message == null ? other$message != null : !this$message.equals(other$message)) {
return false;
}
final Object this$messageParameters = this.getMessageParameters();
final Object other$messageParameters = other.getMessageParameters();
if (this$messageParameters == null ? other$messageParameters != null : !this$messageParameters.equals(other$messageParameters)) {
return false;
}
final Object this$systemMessageType = this.getSystemMessageType();
final Object other$systemMessageType = other.getSystemMessageType();
if (this$systemMessageType == null ? other$systemMessageType != null : !this$systemMessageType.equals(other$systemMessageType)) {
return false;
}
if (this.isReplyable() != other.isReplyable()) {
return false;
}
final Object this$parentMessage = this.getParentMessage();
final Object other$parentMessage = other.getParentMessage();
if (this$parentMessage == null ? other$parentMessage != null : !this$parentMessage.equals(other$parentMessage)) {
return false;
}
final Object this$readStatus = this.getReadStatus();
final Object other$readStatus = other.getReadStatus();
if (this$readStatus == null ? other$readStatus != null : !this$readStatus.equals(other$readStatus)) {
return false;
}
final Object this$messageTypesToIgnore = this.getMessageTypesToIgnore();
final Object other$messageTypesToIgnore = other.getMessageTypesToIgnore();
return this$messageTypesToIgnore == null ? other$messageTypesToIgnore == null : this$messageTypesToIgnore.equals(other$messageTypesToIgnore);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatMessage;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
result = result * PRIME + (this.isGrouped() ? 79 : 97);
result = result * PRIME + (this.isOneToOneConversation() ? 79 : 97);
final Object $activeUser = this.getActiveUser();
result = result * PRIME + ($activeUser == null ? 43 : $activeUser.hashCode());
final Object $selectedIndividualHashMap = this.getSelectedIndividualHashMap();
result = result * PRIME + ($selectedIndividualHashMap == null ? 43 : $selectedIndividualHashMap.hashCode());
result = result * PRIME + (this.isDeleted() ? 79 : 97);
result = result * PRIME + this.getJsonMessageId();
final Object $token = this.getToken();
result = result * PRIME + ($token == null ? 43 : $token.hashCode());
final Object $actorType = this.getActorType();
result = result * PRIME + ($actorType == null ? 43 : $actorType.hashCode());
final Object $actorId = this.getActorId();
result = result * PRIME + ($actorId == null ? 43 : $actorId.hashCode());
final Object $actorDisplayName = this.getActorDisplayName();
result = result * PRIME + ($actorDisplayName == null ? 43 : $actorDisplayName.hashCode());
final long $timestamp = this.getTimestamp();
result = result * PRIME + (int) ($timestamp >>> 32 ^ $timestamp);
final Object $message = this.getMessage();
result = result * PRIME + ($message == null ? 43 : $message.hashCode());
final Object $messageParameters = this.getMessageParameters();
result = result * PRIME + ($messageParameters == null ? 43 : $messageParameters.hashCode());
final Object $systemMessageType = this.getSystemMessageType();
result = result * PRIME + ($systemMessageType == null ? 43 : $systemMessageType.hashCode());
result = result * PRIME + (this.isReplyable() ? 79 : 97);
final Object $parentMessage = this.getParentMessage();
result = result * PRIME + ($parentMessage == null ? 43 : $parentMessage.hashCode());
final Object $readStatus = this.getReadStatus();
result = result * PRIME + ($readStatus == null ? 43 : $readStatus.hashCode());
final Object $messageTypesToIgnore = this.getMessageTypesToIgnore();
result = result * PRIME + ($messageTypesToIgnore == null ? 43 : $messageTypesToIgnore.hashCode());
return result;
}
public String toString() {
return "ChatMessage(isGrouped=" + this.isGrouped() + ", isOneToOneConversation=" + this.isOneToOneConversation() + ", activeUser=" + this.getActiveUser() + ", selectedIndividualHashMap=" + this.getSelectedIndividualHashMap() + ", isDeleted=" + this.isDeleted() + ", jsonMessageId=" + this.getJsonMessageId() + ", token=" + this.getToken() + ", actorType=" + this.getActorType() + ", actorId=" + this.getActorId() + ", actorDisplayName=" + this.getActorDisplayName() + ", timestamp=" + this.getTimestamp() + ", message=" + this.getMessage() + ", messageParameters=" + this.getMessageParameters() + ", systemMessageType=" + this.getSystemMessageType() + ", replyable=" + this.isReplyable() + ", parentMessage=" + this.getParentMessage() + ", readStatus=" + this.getReadStatus() + ", messageTypesToIgnore=" + this.getMessageTypesToIgnore() + ")";
}
public boolean isVoiceMessage() {
return "voice-message".equals(messageType);
}
public boolean isCommandMessage() {
return "command".equals(messageType);
}
public boolean isDeletedCommentMessage() {
return "comment_deleted".equals(messageType);
}
public enum MessageType {
REGULAR_TEXT_MESSAGE,
SYSTEM_MESSAGE,
SINGLE_LINK_GIPHY_MESSAGE,
SINGLE_LINK_TENOR_MESSAGE,
SINGLE_LINK_GIF_MESSAGE,
SINGLE_LINK_MESSAGE,
SINGLE_LINK_VIDEO_MESSAGE,
SINGLE_LINK_IMAGE_MESSAGE,
SINGLE_LINK_AUDIO_MESSAGE,
SINGLE_NC_ATTACHMENT_MESSAGE,
SINGLE_NC_GEOLOCATION_MESSAGE,
VOICE_MESSAGE
}
/**
* see https://nextcloud-talk.readthedocs.io/en/latest/chat/#system-messages
*/
public enum SystemMessageType {
DUMMY,
CONVERSATION_CREATED,
CONVERSATION_RENAMED,
DESCRIPTION_REMOVED,
DESCRIPTION_SET,
CALL_STARTED,
CALL_JOINED,
CALL_LEFT,
CALL_ENDED,
CALL_ENDED_EVERYONE,
CALL_MISSED,
CALL_TRIED,
READ_ONLY_OFF,
READ_ONLY,
LISTABLE_NONE,
LISTABLE_USERS,
LISTABLE_ALL,
LOBBY_NONE,
LOBBY_NON_MODERATORS,
LOBBY_OPEN_TO_EVERYONE,
GUESTS_ALLOWED,
GUESTS_DISALLOWED,
PASSWORD_SET,
PASSWORD_REMOVED,
USER_ADDED,
USER_REMOVED,
GROUP_ADDED,
GROUP_REMOVED,
CIRCLE_ADDED,
CIRCLE_REMOVED,
MODERATOR_PROMOTED,
MODERATOR_DEMOTED,
GUEST_MODERATOR_PROMOTED,
GUEST_MODERATOR_DEMOTED,
MESSAGE_DELETED,
FILE_SHARED,
OBJECT_SHARED,
MATTERBRIDGE_CONFIG_ADDED,
MATTERBRIDGE_CONFIG_EDITED,
MATTERBRIDGE_CONFIG_REMOVED,
MATTERBRIDGE_CONFIG_ENABLED,
MATTERBRIDGE_CONFIG_DISABLED,
CLEARED_CHAT,
REACTION,
REACTION_DELETED,
REACTION_REVOKED
}
}

View File

@ -0,0 +1,473 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Tim Krüger
* @author Marcel Hibbe
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2022 Marcel Hibbe <dev@mhibbe.de>
* Copyright (C) 2021 Tim Krüger <t@timkrueger.me>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import android.text.TextUtils
import android.util.Log
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonIgnore
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.models.database.UserEntity
import com.nextcloud.talk.models.json.chat.ChatUtils.Companion.getParsedMessage
import com.nextcloud.talk.models.json.converters.EnumSystemMessageTypeConverter
import com.nextcloud.talk.utils.ApiUtils
import com.stfalcon.chatkit.commons.models.IUser
import com.stfalcon.chatkit.commons.models.MessageContentType
import kotlinx.android.parcel.Parcelize
import java.security.MessageDigest
import java.util.ArrayList
import java.util.Arrays
import java.util.Date
import java.util.HashMap
import java.util.LinkedHashMap
@Parcelize
@JsonObject
data class ChatMessage(
@JsonIgnore
var isGrouped: Boolean = false,
@JsonIgnore
var isOneToOneConversation: Boolean = false,
@JsonIgnore
var activeUser: UserEntity? = null,
@JsonIgnore
var selectedIndividualHashMap: Map<String?, String?>? = null,
@JsonIgnore
var isDeleted: Boolean = false,
@JsonField(name = ["id"])
var jsonMessageId: Int = 0,
@JsonIgnore
var previousMessageId: Int = -1,
@JsonField(name = ["token"])
var token: String? = null,
// guests or users
@JsonField(name = ["actorType"])
var actorType: String? = null,
@JsonField(name = ["actorId"])
var actorId: String? = null,
// send when crafting a message
@JsonField(name = ["actorDisplayName"])
var actorDisplayName: String? = null,
@JsonField(name = ["timestamp"])
var timestamp: Long = 0,
// send when crafting a message, max 1000 lines
@JsonField(name = ["message"])
var message: String? = null,
@JsonField(name = ["messageParameters"])
var messageParameters: HashMap<String?, HashMap<String?, String?>>? = null,
@JsonField(name = ["systemMessage"], typeConverter = EnumSystemMessageTypeConverter::class)
var systemMessageType: SystemMessageType? = null,
@JsonField(name = ["isReplyable"])
var replyable: Boolean = false,
@JsonField(name = ["parent"])
var parentMessage: ChatMessage? = null,
var readStatus: Enum<ReadStatus> = ReadStatus.NONE,
@JsonField(name = ["messageType"])
var messageType: String? = null,
@JsonField(name = ["reactions"])
var reactions: LinkedHashMap<String, Int>? = null,
@JsonField(name = ["reactionsSelf"])
var reactionsSelf: ArrayList<String>? = null,
var isDownloadingVoiceMessage: Boolean = false,
var resetVoiceMessage: Boolean = false,
var isPlayingVoiceMessage: Boolean = false,
var voiceMessageDuration: Int = 0,
var voiceMessagePlayedSeconds: Int = 0,
var voiceMessageDownloadProgress: Int = 0,
) : Parcelable, MessageContentType, MessageContentType.Image {
@JsonIgnore
var messageTypesToIgnore = Arrays.asList(
MessageType.REGULAR_TEXT_MESSAGE,
MessageType.SYSTEM_MESSAGE,
MessageType.SINGLE_LINK_VIDEO_MESSAGE,
MessageType.SINGLE_LINK_AUDIO_MESSAGE,
MessageType.SINGLE_LINK_MESSAGE,
MessageType.SINGLE_NC_GEOLOCATION_MESSAGE,
MessageType.VOICE_MESSAGE
)
fun hasFileAttachment(): Boolean {
if (messageParameters != null && messageParameters!!.size > 0) {
for ((_, individualHashMap) in messageParameters!!) {
if (MessageDigest.isEqual(
individualHashMap["type"]!!.toByteArray(),
"file".toByteArray()
)
) {
return true
}
}
}
return false
}
fun hasGeoLocation(): Boolean {
if (messageParameters != null && messageParameters!!.size > 0) {
for ((_, individualHashMap) in messageParameters!!) {
if (MessageDigest.isEqual(
individualHashMap["type"]!!.toByteArray(),
"geo-location".toByteArray()
)
) {
return true
}
}
}
return false
}
override fun getImageUrl(): String? {
if (messageParameters != null && messageParameters!!.size > 0) {
for ((_, individualHashMap) in messageParameters!!) {
if (MessageDigest.isEqual(
individualHashMap["type"]!!.toByteArray(),
"file".toByteArray()
)
) {
// FIX-ME: this selectedIndividualHashMap stuff needs to be analyzed and most likely be refactored!
// it just feels wrong to fill this here inside getImageUrl()
selectedIndividualHashMap = individualHashMap
if (!isVoiceMessage) {
if (activeUser != null && activeUser!!.baseUrl != null) {
return ApiUtils.getUrlForFilePreviewWithFileId(
activeUser!!.baseUrl,
individualHashMap["id"],
sharedApplication!!.resources.getDimensionPixelSize(R.dimen.maximum_file_preview_size)
)
} else {
Log.e(
TAG,
"activeUser or activeUser.getBaseUrl() were null when trying to getImageUrl()"
)
}
}
}
}
}
return if (!messageTypesToIgnore.contains(getCalculateMessageType())) {
message!!.trim { it <= ' ' }
} else null
}
fun getCalculateMessageType(): MessageType {
return if (!TextUtils.isEmpty(systemMessage)) {
MessageType.SYSTEM_MESSAGE
} else if (isVoiceMessage) {
MessageType.VOICE_MESSAGE
} else if (hasFileAttachment()) {
MessageType.SINGLE_NC_ATTACHMENT_MESSAGE
} else if (hasGeoLocation()) {
MessageType.SINGLE_NC_GEOLOCATION_MESSAGE
} else {
MessageType.REGULAR_TEXT_MESSAGE
}
}
override fun getId(): String {
return jsonMessageId.toString()
}
override fun getText(): String {
return getParsedMessage(message, messageParameters)!!
}
/*} else if (getCalculateMessageType().equals(MessageType.SINGLE_LINK_MESSAGE)) {
if (actorId.equals(activeUser.getUserId())) {
return (
NextcloudTalkApplication
.Companion.getSharedApplication()
.getString(R.string.nc_sent_a_link_you)
);
} else {
return (String.format(NextcloudTalkApplication.
Companion.
getSharedApplication().
getResources().
getString(R.string.nc_sent_a_link),
!TextUtils.isEmpty(actorDisplayName) ? actorDisplayName : NextcloudTalkApplication.
Companion.
getSharedApplication().
getString(R.string.nc_guest))
);
}*/
val lastMessageDisplayText: String
get() {
if (getCalculateMessageType() == MessageType.REGULAR_TEXT_MESSAGE ||
getCalculateMessageType() == MessageType.SYSTEM_MESSAGE ||
getCalculateMessageType() == MessageType.SINGLE_LINK_MESSAGE
) {
return text
} else {
if (MessageType.SINGLE_LINK_GIPHY_MESSAGE == getCalculateMessageType() ||
MessageType.SINGLE_LINK_TENOR_MESSAGE == getCalculateMessageType() ||
MessageType.SINGLE_LINK_GIF_MESSAGE == getCalculateMessageType()
) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_a_gif_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_a_gif),
getNullsafeActorDisplayName()
)
}
} else if (MessageType.SINGLE_NC_ATTACHMENT_MESSAGE == getCalculateMessageType()) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_an_attachment_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_an_attachment),
getNullsafeActorDisplayName()
)
}
} else if (MessageType.SINGLE_NC_GEOLOCATION_MESSAGE == getCalculateMessageType()) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_location_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_location),
getNullsafeActorDisplayName()
)
}
} else if (MessageType.VOICE_MESSAGE == getCalculateMessageType()) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_voice_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_voice),
getNullsafeActorDisplayName()
)
}
/*} else if (getCalculateMessageType().equals(MessageType.SINGLE_LINK_MESSAGE)) {
if (actorId.equals(activeUser.getUserId())) {
return (
NextcloudTalkApplication
.Companion
.getSharedApplication()
.getString(R.string.nc_sent_a_link_you)
);
} else {
return (String.format(
NextcloudTalkApplication
.Companion
.getSharedApplication()
.getResources()
.getString(R.string.nc_sent_a_link),
!TextUtils.isEmpty(actorDisplayName) ? actorDisplayName : NextcloudTalkApplication.
Companion.
getSharedApplication().
getString(R.string.nc_guest))
);
}*/
} else if (MessageType.SINGLE_LINK_AUDIO_MESSAGE == getCalculateMessageType()) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_an_audio_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_an_audio),
getNullsafeActorDisplayName()
)
}
} else if (MessageType.SINGLE_LINK_VIDEO_MESSAGE == getCalculateMessageType()) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_a_video_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_a_video),
getNullsafeActorDisplayName()
)
}
} else if (MessageType.SINGLE_LINK_IMAGE_MESSAGE == getCalculateMessageType()) {
return if (actorId == activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_an_image_you)
} else {
String.format(
sharedApplication!!.resources.getString(R.string.nc_sent_an_image),
getNullsafeActorDisplayName()
)
}
}
}
return ""
}
private fun getNullsafeActorDisplayName() = if (!TextUtils.isEmpty(actorDisplayName)) {
actorDisplayName
} else {
sharedApplication!!.getString(R.string.nc_guest)
}
override fun getUser(): IUser {
return object : IUser {
override fun getId(): String {
return "$actorType/$actorId"
}
override fun getName(): String {
return if (!TextUtils.isEmpty(actorDisplayName)) {
actorDisplayName!!
} else sharedApplication!!.getString(R.string.nc_guest)
}
override fun getAvatar(): String? {
return when {
activeUser == null -> {
null
}
actorType == "users" -> {
ApiUtils.getUrlForAvatar(activeUser!!.baseUrl, actorId, true)
}
actorType == "bridged" -> {
ApiUtils.getUrlForAvatar(
activeUser!!.baseUrl, "bridge-bot",
true
)
}
else -> {
var apiId: String? = sharedApplication!!.getString(R.string.nc_guest)
if (!TextUtils.isEmpty(actorDisplayName)) {
apiId = actorDisplayName
}
ApiUtils.getUrlForGuestAvatar(activeUser!!.baseUrl, apiId, true)
}
}
}
}
}
override fun getCreatedAt(): Date {
return Date(timestamp * MILLIES)
}
override fun getSystemMessage(): String {
return EnumSystemMessageTypeConverter().convertToString(systemMessageType)
}
val isVoiceMessage: Boolean
get() = "voice-message" == messageType
val isCommandMessage: Boolean
get() = "command" == messageType
val isDeletedCommentMessage: Boolean
get() = "comment_deleted" == messageType
enum class MessageType {
REGULAR_TEXT_MESSAGE,
SYSTEM_MESSAGE,
SINGLE_LINK_GIPHY_MESSAGE,
SINGLE_LINK_TENOR_MESSAGE,
SINGLE_LINK_GIF_MESSAGE,
SINGLE_LINK_MESSAGE,
SINGLE_LINK_VIDEO_MESSAGE,
SINGLE_LINK_IMAGE_MESSAGE,
SINGLE_LINK_AUDIO_MESSAGE,
SINGLE_NC_ATTACHMENT_MESSAGE,
SINGLE_NC_GEOLOCATION_MESSAGE,
VOICE_MESSAGE
}
/**
* see https://nextcloud-talk.readthedocs.io/en/latest/chat/#system-messages
*/
enum class SystemMessageType {
DUMMY, CONVERSATION_CREATED,
CONVERSATION_RENAMED,
DESCRIPTION_REMOVED,
DESCRIPTION_SET,
CALL_STARTED,
CALL_JOINED,
CALL_LEFT,
CALL_ENDED,
CALL_ENDED_EVERYONE,
CALL_MISSED,
CALL_TRIED,
READ_ONLY_OFF,
READ_ONLY,
LISTABLE_NONE,
LISTABLE_USERS,
LISTABLE_ALL,
LOBBY_NONE,
LOBBY_NON_MODERATORS,
LOBBY_OPEN_TO_EVERYONE,
GUESTS_ALLOWED,
GUESTS_DISALLOWED,
PASSWORD_SET,
PASSWORD_REMOVED,
USER_ADDED,
USER_REMOVED,
GROUP_ADDED,
GROUP_REMOVED,
CIRCLE_ADDED,
CIRCLE_REMOVED,
MODERATOR_PROMOTED,
MODERATOR_DEMOTED,
GUEST_MODERATOR_PROMOTED,
GUEST_MODERATOR_DEMOTED,
MESSAGE_DELETED,
FILE_SHARED, OBJECT_SHARED,
MATTERBRIDGE_CONFIG_ADDED,
MATTERBRIDGE_CONFIG_EDITED,
MATTERBRIDGE_CONFIG_REMOVED,
MATTERBRIDGE_CONFIG_ENABLED,
MATTERBRIDGE_CONFIG_DISABLED,
CLEARED_CHAT,
REACTION,
REACTION_DELETED,
REACTION_REVOKED
}
companion object {
private const val TAG = "ChatMessage"
private const val MILLIES: Long = 1000L
}
}

View File

@ -1,76 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
import org.parceler.Parcel;
import java.util.List;
@Parcel
@JsonObject
public class ChatOCS extends GenericOCS {
@JsonField(name = "data")
public List<ChatMessage> data;
public List<ChatMessage> getData() {
return this.data;
}
public void setData(List<ChatMessage> data) {
this.data = data;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatOCS)) {
return false;
}
final ChatOCS other = (ChatOCS) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$data = this.getData();
final Object other$data = other.getData();
return this$data == null ? other$data == null : this$data.equals(other$data);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatOCS;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $data = this.getData();
result = result * PRIME + ($data == null ? 43 : $data.hashCode());
return result;
}
public String toString() {
return "ChatOCS(data=" + this.getData() + ")";
}
}

View File

@ -0,0 +1,40 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatOCS(
@JsonField(name = ["meta"])
var meta: GenericMeta?,
@JsonField(name = ["data"])
var data: List<ChatMessage>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,74 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Marcel Hibbe
* Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
import org.parceler.Parcel;
@Parcel
@JsonObject
public class ChatOCSSingleMessage extends GenericOCS {
@JsonField(name = "data")
public ChatMessage data;
public ChatMessage getData() {
return this.data;
}
public void setData(ChatMessage data) {
this.data = data;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatOCSSingleMessage)) {
return false;
}
final ChatOCSSingleMessage other = (ChatOCSSingleMessage) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$data = this.getData();
final Object other$data = other.getData();
return this$data == null ? other$data == null : this$data.equals(other$data);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatOCSSingleMessage;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $data = this.getData();
result = result * PRIME + ($data == null ? 43 : $data.hashCode());
return result;
}
public String toString() {
return "ChatOCSSingleMessage(data=" + this.getData() + ")";
}
}

View File

@ -0,0 +1,40 @@
/*
* Nextcloud Talk application
*
* @author Marcel Hibbe
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatOCSSingleMessage(
@JsonField(name = ["meta"])
var meta: GenericMeta?,
@JsonField(name = ["data"])
var data: ChatMessage? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,74 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@Parcel
@JsonObject
public class ChatOverall {
@JsonField(name = "ocs")
public ChatOCS ocs;
public ChatOCS getOcs() {
return this.ocs;
}
public void setOcs(ChatOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatOverall)) {
return false;
}
final ChatOverall other = (ChatOverall) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return this$ocs == null ? other$ocs == null : this$ocs.equals(other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
result = result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
return result;
}
public String toString() {
return "ChatOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatOverall(
@JsonField(name = ["ocs"])
var ocs: ChatOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,74 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Marcel Hibbe
* Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@Parcel
@JsonObject
public class ChatOverallSingleMessage {
@JsonField(name = "ocs")
public ChatOCSSingleMessage ocs;
public ChatOCSSingleMessage getOcs() {
return this.ocs;
}
public void setOcs(ChatOCSSingleMessage ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatOverallSingleMessage)) {
return false;
}
final ChatOverallSingleMessage other = (ChatOverallSingleMessage) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return this$ocs == null ? other$ocs == null : this$ocs.equals(other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatOverallSingleMessage;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
result = result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
return result;
}
public String toString() {
return "ChatOverallSingleMessage(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Marcel Hibbe
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatOverallSingleMessage(
@JsonField(name = ["ocs"])
var ocs: ChatOCSSingleMessage? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,76 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
import org.parceler.Parcel;
import java.util.HashMap;
import java.util.Objects;
@Parcel
@JsonObject
public class ChatShareOCS {
@JsonField(name = "data")
public HashMap<String, ChatMessage> data;
public HashMap<String, ChatMessage> getData() {
return this.data;
}
public void setData(HashMap<String, ChatMessage> data) {
this.data = data;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatShareOCS)) {
return false;
}
final ChatShareOCS other = (ChatShareOCS) o;
if (!other.canEqual(this)) {
return false;
}
final Object this$data = this.getData();
final Object other$data = other.getData();
return Objects.equals(this$data, other$data);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatShareOCS;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $data = this.getData();
return result * PRIME + ($data == null ? 43 : $data.hashCode());
}
public String toString() {
return "ChatShareOCS(data=" + this.getData() + ")";
}
}

View File

@ -0,0 +1,38 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Tim Krüger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2022 Tim Krüger <t@timkrueger.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import java.util.HashMap
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatShareOCS(
@JsonField(name = ["data"])
var data: HashMap<String, ChatMessage>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,75 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
import java.util.Objects;
@Parcel
@JsonObject
public class ChatShareOverall {
@JsonField(name = "ocs")
public ChatShareOCS ocs;
public ChatShareOCS getOcs() {
return this.ocs;
}
public void setOcs(ChatShareOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatShareOverall)) {
return false;
}
final ChatShareOverall other = (ChatShareOverall) o;
if (!other.canEqual(this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return Objects.equals(this$ocs, other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatShareOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
return result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
}
public String toString() {
return "ChatShareOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Tim Krüger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2022 Tim Krüger <t@timkrueger.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatShareOverall(
@JsonField(name = ["ocs"])
var ocs: ChatShareOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,78 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import androidx.annotation.NonNull;
@Parcel
@JsonObject
public class ChatShareOverviewOCS {
@JsonField(name = "data")
public HashMap<String, List<Object>> data;
public HashMap<String, List<Object>> getData() {
return this.data;
}
public void setData(HashMap<String, List<Object>> data) {
this.data = data;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatShareOverviewOCS)) {
return false;
}
final ChatShareOverviewOCS other = (ChatShareOverviewOCS) o;
if (!other.canEqual(this)) {
return false;
}
final Object this$data = this.getData();
final Object other$data = other.getData();
return Objects.equals(this$data, other$data);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatShareOverviewOCS;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $data = this.getData();
return result * PRIME + ($data == null ? 43 : $data.hashCode());
}
public String toString() {
return "ChatShareOverviewOCS(data=" + this.getData() + ")";
}
}

View File

@ -0,0 +1,41 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Tim Krüger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2022 Tim Krüger <t@timkrueger.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.AnyParceler
import kotlinx.android.parcel.Parcelize
import kotlinx.android.parcel.TypeParceler
import java.util.HashMap
@Parcelize
@JsonObject
@TypeParceler<Any, AnyParceler>
data class ChatShareOverviewOCS(
@JsonField(name = ["data"])
var data: HashMap<String, List<Any>>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,75 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
import java.util.Objects;
@Parcel
@JsonObject
public class ChatShareOverviewOverall {
@JsonField(name = "ocs")
public ChatShareOverviewOCS ocs;
public ChatShareOverviewOCS getOcs() {
return this.ocs;
}
public void setOcs(ChatShareOverviewOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ChatShareOverviewOverall)) {
return false;
}
final ChatShareOverviewOverall other = (ChatShareOverviewOverall) o;
if (!other.canEqual(this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return Objects.equals(this$ocs, other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof ChatShareOverviewOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
return result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
}
public String toString() {
return "ChatShareOverviewOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Tim Krüger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2022 Tim Krüger <t@timkrueger.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class ChatShareOverviewOverall(
@JsonField(name = ["ocs"])
var ocs: ChatShareOverviewOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -17,9 +17,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.chat
package com.nextcloud.talk.models.json.chat;
public enum ReadStatus {
enum class ReadStatus {
NONE, SENT, READ
}

View File

@ -1,624 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Tim Krüger
* Copyright (C) 2021 Tim Krüger <t@timkrueger.me>
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.database.CapabilitiesUtil;
import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.chat.ChatMessage;
import com.nextcloud.talk.models.json.converters.EnumLobbyStateConverter;
import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter;
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter;
import com.nextcloud.talk.models.json.converters.EnumReadOnlyConversationConverter;
import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter;
import com.nextcloud.talk.models.json.participants.Participant;
import org.parceler.Parcel;
import java.util.HashMap;
import java.util.Objects;
@Parcel
@JsonObject
public class Conversation {
@JsonField(name = "id")
public String roomId;
@JsonField(name = "token")
public String token;
@JsonField(name = "name")
public String name;
@JsonField(name = "displayName")
public String displayName;
@JsonField(name = "description")
public String description;
@JsonField(name = "type", typeConverter = EnumRoomTypeConverter.class)
public ConversationType type;
@JsonField(name = "lastPing")
public long lastPing;
@Deprecated
@JsonField(name = "participants")
public HashMap<String, HashMap<String, Object>> participants;
@JsonField(name = "participantType", typeConverter = EnumParticipantTypeConverter.class)
public Participant.ParticipantType participantType;
@JsonField(name = "hasPassword")
public boolean hasPassword;
@JsonField(name = "sessionId")
public String sessionId;
@JsonField(name = "actorId")
public String actorId;
@JsonField(name = "actorType")
public String actorType;
public String password;
@JsonField(name = "isFavorite")
public boolean isFavorite;
@JsonField(name = "lastActivity")
public long lastActivity;
@JsonField(name = "unreadMessages")
public int unreadMessages;
@JsonField(name = "unreadMention")
public boolean unreadMention;
@JsonField(name = "lastMessage")
public ChatMessage lastMessage;
@JsonField(name = "objectType")
public String objectType;
@JsonField(name = "notificationLevel", typeConverter = EnumNotificationLevelConverter.class)
public NotificationLevel notificationLevel;
@JsonField(name = "readOnly", typeConverter = EnumReadOnlyConversationConverter.class)
public ConversationReadOnlyState conversationReadOnlyState;
@JsonField(name = "lobbyState", typeConverter = EnumLobbyStateConverter.class)
public LobbyState lobbyState;
@JsonField(name = "lobbyTimer")
public Long lobbyTimer;
@JsonField(name = "lastReadMessage")
public int lastReadMessage;
@JsonField(name = "hasCall")
public boolean hasCall;
@JsonField(name = "callFlag")
public int callFlag;
@JsonField(name = "canStartCall")
public boolean canStartCall;
@JsonField(name = "canLeaveConversation")
public Boolean canLeaveConversation;
@JsonField(name = "canDeleteConversation")
public Boolean canDeleteConversation;
@JsonField(name = "unreadMentionDirect")
public Boolean unreadMentionDirect;
@JsonField(name = "notificationCalls")
public Integer notificationCalls;
@JsonField(name = "permissions")
public int permissions;
public boolean isPublic() {
return (ConversationType.ROOM_PUBLIC_CALL.equals(type));
}
public boolean isGuest() {
return (Participant.ParticipantType.GUEST.equals(participantType) ||
Participant.ParticipantType.GUEST_MODERATOR.equals(participantType) ||
Participant.ParticipantType.USER_FOLLOWING_LINK.equals(participantType));
}
private boolean isLockedOneToOne(UserEntity conversationUser) {
return (getType() == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL &&
CapabilitiesUtil.hasSpreedFeatureCapability(conversationUser, "locked-one-to-one-rooms"));
}
public boolean canModerate(UserEntity conversationUser) {
return (isParticipantOwnerOrModerator() && !isLockedOneToOne(conversationUser));
}
public boolean isParticipantOwnerOrModerator() {
return (Participant.ParticipantType.OWNER.equals(participantType) ||
Participant.ParticipantType.GUEST_MODERATOR.equals(participantType) ||
Participant.ParticipantType.MODERATOR.equals(participantType));
}
public boolean shouldShowLobby(UserEntity conversationUser) {
return LobbyState.LOBBY_STATE_MODERATORS_ONLY.equals(getLobbyState()) && !canModerate(conversationUser);
}
public boolean isLobbyViewApplicable(UserEntity conversationUser) {
return !canModerate(conversationUser) && (getType() == ConversationType.ROOM_GROUP_CALL || getType() == ConversationType.ROOM_PUBLIC_CALL);
}
public boolean isNameEditable(UserEntity conversationUser) {
return (canModerate(conversationUser) && !ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL.equals(type));
}
public boolean canLeave(UserEntity conversationUser) {
if (canLeaveConversation != null) {
// Available since APIv2
return canLeaveConversation;
}
// Fallback for APIv1
return !canModerate(conversationUser) ||
(getType() != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL && this.participants.size() > 1);
}
public boolean canDelete(UserEntity conversationUser) {
if (canDeleteConversation != null) {
// Available since APIv2
return canDeleteConversation;
}
// Fallback for APIv1
return canModerate(conversationUser);
}
public String getRoomId() {
return this.roomId;
}
public String getToken() {
return this.token;
}
public String getName() {
return this.name;
}
public String getDescription() {
return this.description;
}
public String getDisplayName() {
return this.displayName;
}
public ConversationType getType() {
return this.type;
}
public long getLastPing() {
return this.lastPing;
}
public Participant.ParticipantType getParticipantType() {
return this.participantType;
}
public String getActorId() {
return actorId;
}
public String getActorType() {
return actorType;
}
public boolean isHasPassword() {
return this.hasPassword;
}
public String getSessionId() {
return this.sessionId;
}
public String getPassword() {
return this.password;
}
public boolean isFavorite() {
return this.isFavorite;
}
public long getLastActivity() {
return this.lastActivity;
}
public int getUnreadMessages() {
return this.unreadMessages;
}
public boolean isUnreadMention() {
return this.unreadMention;
}
public ChatMessage getLastMessage() {
return this.lastMessage;
}
public String getObjectType() {
return this.objectType;
}
public NotificationLevel getNotificationLevel() {
return this.notificationLevel;
}
public ConversationReadOnlyState getConversationReadOnlyState() {
return this.conversationReadOnlyState;
}
public LobbyState getLobbyState() {
return this.lobbyState;
}
public Long getLobbyTimer() {
return this.lobbyTimer;
}
public int getLastReadMessage() {
return this.lastReadMessage;
}
public boolean getHasCall() {
return hasCall;
}
public int getCallFlag() {
return this.callFlag;
}
public boolean getCanStartCall() {
return canStartCall;
}
public Boolean getUnreadMentionDirect() {
return unreadMentionDirect;
}
public Integer getNotificationCalls() { return notificationCalls; }
public int getPermissions() {
return permissions;
}
public void setRoomId(String roomId) {
this.roomId = roomId;
}
public void setToken(String token) {
this.token = token;
}
public void setName(String name) {
this.name = name;
}
public void setDescription(String description) {
this.description = description;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public void setType(ConversationType type) {
this.type = type;
}
public void setLastPing(long lastPing) {
this.lastPing = lastPing;
}
@Deprecated
public void setParticipants(HashMap<String, HashMap<String, Object>> participants) {
this.participants = participants;
}
public void setParticipantType(Participant.ParticipantType participantType) {
this.participantType = participantType;
}
public void setActorId(String actorId) {
this.actorId = actorId;
}
public void setActorType(String actorType) {
this.actorType = actorType;
}
public void setHasPassword(boolean hasPassword) {
this.hasPassword = hasPassword;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public void setPassword(String password) {
this.password = password;
}
public void setFavorite(boolean isFavorite) {
this.isFavorite = isFavorite;
}
public void setLastActivity(long lastActivity) {
this.lastActivity = lastActivity;
}
public void setUnreadMessages(int unreadMessages) {
this.unreadMessages = unreadMessages;
}
public void setUnreadMention(boolean unreadMention) {
this.unreadMention = unreadMention;
}
public void setLastMessage(ChatMessage lastMessage) {
this.lastMessage = lastMessage;
}
public void setObjectType(String objectType) {
this.objectType = objectType;
}
public void setNotificationLevel(NotificationLevel notificationLevel) {
this.notificationLevel = notificationLevel;
}
public void setConversationReadOnlyState(ConversationReadOnlyState conversationReadOnlyState) {
this.conversationReadOnlyState = conversationReadOnlyState;
}
public void setLobbyState(LobbyState lobbyState) {
this.lobbyState = lobbyState;
}
public void setLobbyTimer(Long lobbyTimer) {
this.lobbyTimer = lobbyTimer;
}
public void setLastReadMessage(int lastReadMessage) {
this.lastReadMessage = lastReadMessage;
}
public void setHasCall(boolean hasCall) {
this.hasCall = hasCall;
}
public void setCallFlag(int callFlag) {
this.callFlag = callFlag;
}
public void setCanStartCall(boolean canStartCall) {
this.canStartCall = canStartCall;
}
public void setUnreadMentionDirect(Boolean unreadMentionDirect) {
this.unreadMentionDirect = unreadMentionDirect;
}
public void setPermissions(int permissions) {
this.permissions = permissions;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Conversation that = (Conversation) o;
if (lastPing != that.lastPing) {
return false;
}
if (hasPassword != that.hasPassword) {
return false;
}
if (isFavorite != that.isFavorite) {
return false;
}
if (lastActivity != that.lastActivity) {
return false;
}
if (unreadMessages != that.unreadMessages) {
return false;
}
if (unreadMention != that.unreadMention) {
return false;
}
if (lastReadMessage != that.lastReadMessage) {
return false;
}
if (hasCall != that.hasCall) {
return false;
}
if (callFlag != that.callFlag) {
return false;
}
if (canStartCall != that.canStartCall) {
return false;
}
if (!Objects.equals(roomId, that.roomId)) {
return false;
}
if (!token.equals(that.token)) {
return false;
}
if (!Objects.equals(name, that.name)) {
return false;
}
if (!Objects.equals(displayName, that.displayName)) {
return false;
}
if (!Objects.equals(description, that.description)) {
return false;
}
if (type != that.type) {
return false;
}
if (!Objects.equals(participants, that.participants)) {
return false;
}
if (participantType != that.participantType) {
return false;
}
if (!Objects.equals(sessionId, that.sessionId)) {
return false;
}
if (!Objects.equals(actorId, that.actorId)) {
return false;
}
if (!Objects.equals(actorType, that.actorType)) {
return false;
}
if (!Objects.equals(password, that.password)) {
return false;
}
if (!Objects.equals(lastMessage, that.lastMessage)) {
return false;
}
if (!Objects.equals(objectType, that.objectType)) {
return false;
}
if (notificationLevel != that.notificationLevel) {
return false;
}
if (conversationReadOnlyState != that.conversationReadOnlyState) {
return false;
}
if (lobbyState != that.lobbyState) {
return false;
}
if (!Objects.equals(lobbyTimer, that.lobbyTimer)) {
return false;
}
if (!Objects.equals(canLeaveConversation, that.canLeaveConversation)) {
return false;
}
if (!Objects.equals(notificationCalls, that.notificationCalls)) {
return false;
}
if (permissions != that.permissions) {
return false;
}
return Objects.equals(canDeleteConversation, that.canDeleteConversation);
}
protected boolean canEqual(final Object other) {
return other instanceof Conversation;
}
@Override
public int hashCode() {
int result = roomId != null ? roomId.hashCode() : 0;
result = 31 * result + token.hashCode();
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (displayName != null ? displayName.hashCode() : 0);
result = 31 * result + (description != null ? description.hashCode() : 0);
result = 31 * result + type.hashCode();
result = 31 * result + (int) (lastPing ^ (lastPing >>> 32));
result = 31 * result + (participants != null ? participants.hashCode() : 0);
result = 31 * result + (participantType != null ? participantType.hashCode() : 0);
result = 31 * result + (actorId != null ? actorId.hashCode() : 0);
result = 31 * result + (actorType != null ? actorType.hashCode() : 0);
result = 31 * result + (hasPassword ? 1 : 0);
result = 31 * result + (sessionId != null ? sessionId.hashCode() : 0);
result = 31 * result + (password != null ? password.hashCode() : 0);
result = 31 * result + (isFavorite ? 1 : 0);
result = 31 * result + (int) (lastActivity ^ (lastActivity >>> 32));
result = 31 * result + unreadMessages;
result = 31 * result + (unreadMention ? 1 : 0);
result = 31 * result + (lastMessage != null ? lastMessage.hashCode() : 0);
result = 31 * result + (objectType != null ? objectType.hashCode() : 0);
result = 31 * result + (notificationLevel != null ? notificationLevel.hashCode() : 0);
result = 31 * result + (conversationReadOnlyState != null ? conversationReadOnlyState.hashCode() : 0);
result = 31 * result + (lobbyState != null ? lobbyState.hashCode() : 0);
result = 31 * result + (lobbyTimer != null ? lobbyTimer.hashCode() : 0);
result = 31 * result + lastReadMessage;
result = 31 * result + (hasCall ? 1 : 0);
result = 31 * result + callFlag;
result = 31 * result + (canStartCall ? 1 : 0);
result = 31 * result + (canLeaveConversation != null ? canLeaveConversation.hashCode() : 0);
result = 31 * result + (canDeleteConversation != null ? canDeleteConversation.hashCode() : 0);
result = 31 * result + (notificationCalls != null ? notificationCalls.hashCode() : 0);
result = 31 * result + permissions;
return result;
}
@Override
public String toString() {
return "Conversation{" +
"roomId='" + roomId + '\'' +
", token='" + token + '\'' +
", name='" + name + '\'' +
", displayName='" + displayName + '\'' +
", description='" + description + '\'' +
", type=" + type +
", lastPing=" + lastPing +
", participants=" + participants +
", participantType=" + participantType +
", actorId=" + actorId +
", actorType=" + actorType +
", hasPassword=" + hasPassword +
", sessionId='" + sessionId + '\'' +
", password='" + password + '\'' +
", isFavorite=" + isFavorite +
", lastActivity=" + lastActivity +
", unreadMessages=" + unreadMessages +
", unreadMention=" + unreadMention +
", lastMessage=" + lastMessage +
", objectType='" + objectType + '\'' +
", notificationLevel=" + notificationLevel +
", conversationReadOnlyState=" + conversationReadOnlyState +
", lobbyState=" + lobbyState +
", lobbyTimer=" + lobbyTimer +
", lastReadMessage=" + lastReadMessage +
", hasCall=" + hasCall +
", callFlag=" + callFlag +
", canStartCall=" + canStartCall +
", canLeaveConversation=" + canLeaveConversation +
", canDeleteConversation=" + canDeleteConversation +
", notificationCalls=" + notificationCalls +
", permissions=" + permissions +
'}';
}
public enum NotificationLevel {
DEFAULT,
ALWAYS,
MENTION,
NEVER
}
public enum LobbyState {
LOBBY_STATE_ALL_PARTICIPANTS,
LOBBY_STATE_MODERATORS_ONLY
}
public enum ConversationReadOnlyState {
CONVERSATION_READ_WRITE,
CONVERSATION_READ_ONLY
}
@Parcel
public enum ConversationType {
DUMMY,
ROOM_TYPE_ONE_TO_ONE_CALL,
ROOM_GROUP_CALL,
ROOM_PUBLIC_CALL,
ROOM_SYSTEM
}
}

View File

@ -0,0 +1,198 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Tim Krüger
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2021 Tim Krüger <t@timkrueger.me>
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.database.CapabilitiesUtil
import com.nextcloud.talk.models.database.UserEntity
import com.nextcloud.talk.models.json.chat.ChatMessage
import com.nextcloud.talk.models.json.converters.EnumLobbyStateConverter
import com.nextcloud.talk.models.json.converters.EnumNotificationLevelConverter
import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter
import com.nextcloud.talk.models.json.converters.EnumReadOnlyConversationConverter
import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter
import com.nextcloud.talk.models.json.participants.Participant.ParticipantType
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class Conversation(
@JsonField(name = ["id"])
var roomId: String? = null,
@JsonField(name = ["token"])
var token: String? = null,
@JsonField(name = ["name"])
var name: String? = null,
@JsonField(name = ["displayName"])
var displayName: String? = null,
@JsonField(name = ["description"])
var description: String? = null,
@JsonField(name = ["type"], typeConverter = EnumRoomTypeConverter::class)
var type: ConversationType? = null,
@JsonField(name = ["lastPing"])
var lastPing: Long = 0,
@JsonField(name = ["participantType"], typeConverter = EnumParticipantTypeConverter::class)
var participantType: ParticipantType? = null,
@JsonField(name = ["hasPassword"])
var hasPassword: Boolean = false,
@JsonField(name = ["sessionId"])
var sessionId: String? = null,
@JsonField(name = ["actorId"])
var actorId: String? = null,
@JsonField(name = ["actorType"])
var actorType: String? = null,
var password: String? = null,
@JsonField(name = ["isFavorite"])
var favorite: Boolean = false,
@JsonField(name = ["lastActivity"])
var lastActivity: Long = 0,
@JsonField(name = ["unreadMessages"])
var unreadMessages: Int = 0,
@JsonField(name = ["unreadMention"])
var unreadMention: Boolean = false,
@JsonField(name = ["lastMessage"])
var lastMessage: ChatMessage? = null,
@JsonField(name = ["objectType"])
var objectType: String? = null,
@JsonField(name = ["notificationLevel"], typeConverter = EnumNotificationLevelConverter::class)
var notificationLevel: NotificationLevel? = null,
@JsonField(name = ["readOnly"], typeConverter = EnumReadOnlyConversationConverter::class)
var conversationReadOnlyState: ConversationReadOnlyState? = null,
@JsonField(name = ["lobbyState"], typeConverter = EnumLobbyStateConverter::class)
var lobbyState: LobbyState? = null,
@JsonField(name = ["lobbyTimer"])
var lobbyTimer: Long? = null,
@JsonField(name = ["lastReadMessage"])
var lastReadMessage: Int = 0,
@JsonField(name = ["hasCall"])
var hasCall: Boolean = false,
@JsonField(name = ["callFlag"])
var callFlag: Int = 0,
@JsonField(name = ["canStartCall"])
var canStartCall: Boolean = false,
@JsonField(name = ["canLeaveConversation"])
var canLeaveConversation: Boolean? = null,
@JsonField(name = ["canDeleteConversation"])
var canDeleteConversation: Boolean? = null,
@JsonField(name = ["unreadMentionDirect"])
var unreadMentionDirect: Boolean? = null,
@JsonField(name = ["notificationCalls"])
var notificationCalls: Int? = null,
@JsonField(name = ["permissions"])
var permissions: Int = 0
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
val isPublic: Boolean
get() = ConversationType.ROOM_PUBLIC_CALL == type
val isGuest: Boolean
get() = ParticipantType.GUEST == participantType ||
ParticipantType.GUEST_MODERATOR == participantType ||
ParticipantType.USER_FOLLOWING_LINK == participantType
val isParticipantOwnerOrModerator: Boolean
get() = ParticipantType.OWNER == participantType ||
ParticipantType.GUEST_MODERATOR == participantType ||
ParticipantType.MODERATOR == participantType
private fun isLockedOneToOne(conversationUser: UserEntity): Boolean {
return type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL &&
CapabilitiesUtil.hasSpreedFeatureCapability(conversationUser, "locked-one-to-one-rooms")
}
fun canModerate(conversationUser: UserEntity): Boolean {
return isParticipantOwnerOrModerator && !isLockedOneToOne(conversationUser)
}
fun shouldShowLobby(conversationUser: UserEntity): Boolean {
return LobbyState.LOBBY_STATE_MODERATORS_ONLY == lobbyState && !canModerate(conversationUser)
}
fun isLobbyViewApplicable(conversationUser: UserEntity): Boolean {
return !canModerate(conversationUser) &&
(type == ConversationType.ROOM_GROUP_CALL || type == ConversationType.ROOM_PUBLIC_CALL)
}
fun isNameEditable(conversationUser: UserEntity): Boolean {
return canModerate(conversationUser) && ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL != type
}
fun canLeave(): Boolean {
return if (canLeaveConversation != null) {
// Available since APIv2
canLeaveConversation!!
} else {
true
}
}
fun canDelete(conversationUser: UserEntity): Boolean {
return if (canDeleteConversation != null) {
// Available since APIv2
canDeleteConversation!!
} else canModerate(conversationUser)
// Fallback for APIv1
}
enum class NotificationLevel {
DEFAULT, ALWAYS, MENTION, NEVER
}
enum class LobbyState {
LOBBY_STATE_ALL_PARTICIPANTS, LOBBY_STATE_MODERATORS_ONLY
}
enum class ConversationReadOnlyState {
CONVERSATION_READ_WRITE, CONVERSATION_READ_ONLY
}
@Parcelize
enum class ConversationType : Parcelable {
DUMMY, ROOM_TYPE_ONE_TO_ONE_CALL, ROOM_GROUP_CALL, ROOM_PUBLIC_CALL, ROOM_SYSTEM
}
}

View File

@ -1,72 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
@JsonObject
public class RoomOCS extends GenericOCS {
@JsonField(name = "data")
public Conversation data;
public Conversation getData() {
return this.data;
}
public void setData(Conversation data) {
this.data = data;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof RoomOCS)) {
return false;
}
final RoomOCS other = (RoomOCS) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$data = this.getData();
final Object other$data = other.getData();
return this$data == null ? other$data == null : this$data.equals(other$data);
}
protected boolean canEqual(final Object other) {
return other instanceof RoomOCS;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $data = this.getData();
result = result * PRIME + ($data == null ? 43 : $data.hashCode());
return result;
}
public String toString() {
return "RoomOCS(data=" + this.getData() + ")";
}
}

View File

@ -0,0 +1,40 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Mario Danic
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class RoomOCS(
@JsonField(name = ["meta"])
var meta: GenericMeta?,
@JsonField(name = ["data"])
var data: Conversation? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,71 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
@JsonObject
public class RoomOverall {
@JsonField(name = "ocs")
public RoomOCS ocs;
public RoomOCS getOcs() {
return this.ocs;
}
public void setOcs(RoomOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof RoomOverall)) {
return false;
}
final RoomOverall other = (RoomOverall) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return this$ocs == null ? other$ocs == null : this$ocs.equals(other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof RoomOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
result = result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
return result;
}
public String toString() {
return "RoomOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Mario Danic
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class RoomOverall(
@JsonField(name = ["ocs"])
var ocs: RoomOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,77 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
import org.parceler.Parcel;
import java.util.List;
@Parcel
@JsonObject
public class RoomsOCS extends GenericOCS {
@JsonField(name = "data")
public List<Conversation> data;
public List<Conversation> getData() {
return this.data;
}
public void setData(List<Conversation> data) {
this.data = data;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof RoomsOCS)) {
return false;
}
final RoomsOCS other = (RoomsOCS) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$data = this.getData();
final Object other$data = other.getData();
return this$data == null ? other$data == null : this$data.equals(other$data);
}
protected boolean canEqual(final Object other) {
return other instanceof RoomsOCS;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $data = this.getData();
result = result * PRIME + ($data == null ? 43 : $data.hashCode());
return result;
}
public String toString() {
return "RoomsOCS(data=" + this.getData() + ")";
}
}

View File

@ -0,0 +1,40 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Mario Danic
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class RoomsOCS(
@JsonField(name = ["meta"])
var meta: GenericMeta?,
@JsonField(name = ["data"])
var data: List<Conversation>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,74 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@Parcel
@JsonObject
public class RoomsOverall {
@JsonField(name = "ocs")
public RoomsOCS ocs;
public RoomsOCS getOcs() {
return this.ocs;
}
public void setOcs(RoomsOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof RoomsOverall)) {
return false;
}
final RoomsOverall other = (RoomsOverall) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return this$ocs == null ? other$ocs == null : this$ocs.equals(other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof RoomsOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
result = result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
return result;
}
public String toString() {
return "RoomsOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Andy Scherzinger
* @author Mario Danic
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.conversations
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class RoomsOverall(
@JsonField(name = ["ocs"])
var ocs: RoomsOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -171,6 +171,7 @@ class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.Syst
}
}
@Suppress("Detekt.ComplexMethod")
override fun convertToString(`object`: ChatMessage.SystemMessageType?): String {
if (`object` == null) {

View File

@ -4,7 +4,7 @@
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@ -1,38 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.generic;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
/**
* Legacy class for the remaining java parceler classes
* that haven't yet been migrated to kotlin data classes
*/
@Parcel
@JsonObject
@Deprecated
public class GenericOCS {
@JsonField(name = "meta")
public GenericMeta meta;
}

View File

@ -1,22 +1,23 @@
/*
* Nextcloud Talk application
*
* Nextcloud Talk application
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.generic

View File

@ -1,35 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.participants;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
import com.nextcloud.talk.models.json.conversations.Conversation;
@JsonObject
public class AddParticipantOCS extends GenericOCS {
/*
Returned room will have only type set, and sometimes even that will be null
*/
@JsonField(name = "data")
Conversation data;
}

View File

@ -0,0 +1,42 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class AddParticipantOCS(
@JsonField(name = ["meta"])
var meta: GenericMeta?,
/* Returned room will have only type set, and sometimes even that will be null */
@JsonField(name = ["data"])
var data: Conversation? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,72 +0,0 @@
/*
*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic (mario@lovelyhq.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.participants;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.conversations.RoomsOCS;
@JsonObject
public class AddParticipantOverall {
@JsonField(name = "ocs")
RoomsOCS ocs;
public RoomsOCS getOcs() {
return this.ocs;
}
public void setOcs(RoomsOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof AddParticipantOverall)) {
return false;
}
final AddParticipantOverall other = (AddParticipantOverall) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return this$ocs == null ? other$ocs == null : this$ocs.equals(other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof AddParticipantOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
result = result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
return result;
}
public String toString() {
return "AddParticipantOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,38 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.participants
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.conversations.RoomsOCS
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class AddParticipantOverall(
@JsonField(name = ["ocs"])
var ocs: RoomsOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -18,9 +18,6 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Parts related to account import were either copied from or inspired by the great work done by David Luhmer at:
* https://github.com/nextcloud/ownCloud-Account-Importer
*/
package com.nextcloud.talk.models.json.participants

View File

@ -1,100 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.converters.ObjectParcelConverter;
import org.parceler.ParcelPropertyConverter;
@JsonObject
public class DataChannelMessage {
@JsonField(name = "type")
String type;
@ParcelPropertyConverter(ObjectParcelConverter.class)
@JsonField(name = "payload")
Object payload;
public DataChannelMessage(String type) {
this.type = type;
}
public DataChannelMessage() {
}
public String getType() {
return this.type;
}
public Object getPayload() {
return this.payload;
}
public void setType(String type) {
this.type = type;
}
public void setPayload(Object payload) {
this.payload = payload;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof DataChannelMessage)) {
return false;
}
final DataChannelMessage other = (DataChannelMessage) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$type = this.getType();
final Object other$type = other.getType();
if (this$type == null ? other$type != null : !this$type.equals(other$type)) {
return false;
}
final Object this$payload = this.getPayload();
final Object other$payload = other.getPayload();
return this$payload == null ? other$payload == null : this$payload.equals(other$payload);
}
protected boolean canEqual(final Object other) {
return other instanceof DataChannelMessage;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $type = this.getType();
result = result * PRIME + ($type == null ? 43 : $type.hashCode());
final Object $payload = this.getPayload();
result = result * PRIME + ($payload == null ? 43 : $payload.hashCode());
return result;
}
public String toString() {
return "DataChannelMessage(type=" + this.getType() + ", payload=" + this.getPayload() + ")";
}
}

View File

@ -0,0 +1,43 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.AnyParceler
import kotlinx.android.parcel.Parcelize
import kotlinx.android.parcel.TypeParceler
@Parcelize
@JsonObject
@TypeParceler<Any?, AnyParceler>
data class DataChannelMessage(
@JsonField(name = ["type"])
var type: String? = null,
@JsonField(name = ["payload"])
var payload: Any? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
constructor(type: String) : this(type, null)
}

View File

@ -1,102 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.converters.ObjectParcelConverter;
import org.parceler.ParcelPropertyConverter;
import java.util.HashMap;
@JsonObject
public class DataChannelMessageNick {
@JsonField(name = "type")
String type;
@ParcelPropertyConverter(ObjectParcelConverter.class)
@JsonField(name = "payload")
HashMap<String, String> payload;
public DataChannelMessageNick(String type) {
this.type = type;
}
public DataChannelMessageNick() {
}
public String getType() {
return this.type;
}
public HashMap<String, String> getPayload() {
return this.payload;
}
public void setType(String type) {
this.type = type;
}
public void setPayload(HashMap<String, String> payload) {
this.payload = payload;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof DataChannelMessageNick)) {
return false;
}
final DataChannelMessageNick other = (DataChannelMessageNick) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$type = this.getType();
final Object other$type = other.getType();
if (this$type == null ? other$type != null : !this$type.equals(other$type)) {
return false;
}
final Object this$payload = this.getPayload();
final Object other$payload = other.getPayload();
return this$payload == null ? other$payload == null : this$payload.equals(other$payload);
}
protected boolean canEqual(final Object other) {
return other instanceof DataChannelMessageNick;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $type = this.getType();
result = result * PRIME + ($type == null ? 43 : $type.hashCode());
final Object $payload = this.getPayload();
result = result * PRIME + ($payload == null ? 43 : $payload.hashCode());
return result;
}
public String toString() {
return "DataChannelMessageNick(type=" + this.getType() + ", payload=" + this.getPayload() + ")";
}
}

View File

@ -0,0 +1,40 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import java.util.HashMap
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class DataChannelMessageNick(
@JsonField(name = ["type"])
var type: String? = null,
@JsonField(name = ["payload"])
var payload: HashMap<String, String>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,107 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@JsonObject
@Parcel
public class NCIceCandidate {
@JsonField(name = "sdpMLineIndex")
int sdpMLineIndex;
@JsonField(name = "sdpMid")
String sdpMid;
@JsonField(name = "candidate")
String candidate;
public int getSdpMLineIndex() {
return this.sdpMLineIndex;
}
public String getSdpMid() {
return this.sdpMid;
}
public String getCandidate() {
return this.candidate;
}
public void setSdpMLineIndex(int sdpMLineIndex) {
this.sdpMLineIndex = sdpMLineIndex;
}
public void setSdpMid(String sdpMid) {
this.sdpMid = sdpMid;
}
public void setCandidate(String candidate) {
this.candidate = candidate;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof NCIceCandidate)) {
return false;
}
final NCIceCandidate other = (NCIceCandidate) o;
if (!other.canEqual((Object) this)) {
return false;
}
if (this.getSdpMLineIndex() != other.getSdpMLineIndex()) {
return false;
}
final Object this$sdpMid = this.getSdpMid();
final Object other$sdpMid = other.getSdpMid();
if (this$sdpMid == null ? other$sdpMid != null : !this$sdpMid.equals(other$sdpMid)) {
return false;
}
final Object this$candidate = this.getCandidate();
final Object other$candidate = other.getCandidate();
return this$candidate == null ? other$candidate == null : this$candidate.equals(other$candidate);
}
protected boolean canEqual(final Object other) {
return other instanceof NCIceCandidate;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
result = result * PRIME + this.getSdpMLineIndex();
final Object $sdpMid = this.getSdpMid();
result = result * PRIME + ($sdpMid == null ? 43 : $sdpMid.hashCode());
final Object $candidate = this.getCandidate();
result = result * PRIME + ($candidate == null ? 43 : $candidate.hashCode());
return result;
}
public String toString() {
return "NCIceCandidate(sdpMLineIndex=" + this.getSdpMLineIndex() + ", sdpMid=" + this.getSdpMid() + ", candidate=" + this.getCandidate() + ")";
}
}

View File

@ -0,0 +1,41 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class NCIceCandidate(
@JsonField(name = ["sdpMLineIndex"])
var sdpMLineIndex: Int = 0,
@JsonField(name = ["sdpMid"])
var sdpMid: String? = null,
@JsonField(name = ["candidate"])
var candidate: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(0, null, null)
}

View File

@ -1,146 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@JsonObject
@Parcel
public class NCMessagePayload {
@JsonField(name = "type")
String type;
@JsonField(name = "sdp")
String sdp;
@JsonField(name = "nick")
String nick;
@JsonField(name = "candidate")
NCIceCandidate iceCandidate;
@JsonField(name = "name")
String name;
public String getType() {
return this.type;
}
public String getSdp() {
return this.sdp;
}
public String getNick() {
return this.nick;
}
public NCIceCandidate getIceCandidate() {
return this.iceCandidate;
}
public String getName() {
return this.name;
}
public void setType(String type) {
this.type = type;
}
public void setSdp(String sdp) {
this.sdp = sdp;
}
public void setNick(String nick) {
this.nick = nick;
}
public void setIceCandidate(NCIceCandidate iceCandidate) {
this.iceCandidate = iceCandidate;
}
public void setName(String name) {
this.name = name;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof NCMessagePayload)) {
return false;
}
final NCMessagePayload other = (NCMessagePayload) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$type = this.getType();
final Object other$type = other.getType();
if (this$type == null ? other$type != null : !this$type.equals(other$type)) {
return false;
}
final Object this$sdp = this.getSdp();
final Object other$sdp = other.getSdp();
if (this$sdp == null ? other$sdp != null : !this$sdp.equals(other$sdp)) {
return false;
}
final Object this$nick = this.getNick();
final Object other$nick = other.getNick();
if (this$nick == null ? other$nick != null : !this$nick.equals(other$nick)) {
return false;
}
final Object this$iceCandidate = this.getIceCandidate();
final Object other$iceCandidate = other.getIceCandidate();
if (this$iceCandidate == null ? other$iceCandidate != null : !this$iceCandidate.equals(other$iceCandidate)) {
return false;
}
final Object this$name = this.getName();
final Object other$name = other.getName();
return this$name == null ? other$name == null : this$name.equals(other$name);
}
protected boolean canEqual(final Object other) {
return other instanceof NCMessagePayload;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $type = this.getType();
result = result * PRIME + ($type == null ? 43 : $type.hashCode());
final Object $sdp = this.getSdp();
result = result * PRIME + ($sdp == null ? 43 : $sdp.hashCode());
final Object $nick = this.getNick();
result = result * PRIME + ($nick == null ? 43 : $nick.hashCode());
final Object $iceCandidate = this.getIceCandidate();
result = result * PRIME + ($iceCandidate == null ? 43 : $iceCandidate.hashCode());
final Object $name = this.getName();
result = result * PRIME + ($name == null ? 43 : $name.hashCode());
return result;
}
public String toString() {
return "NCMessagePayload(type=" + this.getType() + ", sdp=" + this.getSdp() + ", nick=" + this.getNick() + ", iceCandidate=" + this.getIceCandidate() + ", name=" + this.getName() + ")";
}
}

View File

@ -0,0 +1,45 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class NCMessagePayload(
@JsonField(name = ["type"])
var type: String? = null,
@JsonField(name = ["sdp"])
var sdp: String? = null,
@JsonField(name = ["nick"])
var nick: String? = null,
@JsonField(name = ["candidate"])
var iceCandidate: NCIceCandidate? = null,
@JsonField(name = ["name"])
var name: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null, null, null)
}

View File

@ -1,111 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@JsonObject
@Parcel
public class NCMessageWrapper {
@JsonField(name = "fn")
NCSignalingMessage signalingMessage;
// always a "message"
@JsonField(name = "ev")
String ev;
@JsonField(name = "sessionId")
String sessionId;
public NCSignalingMessage getSignalingMessage() {
return this.signalingMessage;
}
public String getEv() {
return this.ev;
}
public String getSessionId() {
return this.sessionId;
}
public void setSignalingMessage(NCSignalingMessage signalingMessage) {
this.signalingMessage = signalingMessage;
}
public void setEv(String ev) {
this.ev = ev;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof NCMessageWrapper)) {
return false;
}
final NCMessageWrapper other = (NCMessageWrapper) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$signalingMessage = this.getSignalingMessage();
final Object other$signalingMessage = other.getSignalingMessage();
if (this$signalingMessage == null ? other$signalingMessage != null : !this$signalingMessage.equals(other$signalingMessage)) {
return false;
}
final Object this$ev = this.getEv();
final Object other$ev = other.getEv();
if (this$ev == null ? other$ev != null : !this$ev.equals(other$ev)) {
return false;
}
final Object this$sessionId = this.getSessionId();
final Object other$sessionId = other.getSessionId();
return this$sessionId == null ? other$sessionId == null : this$sessionId.equals(other$sessionId);
}
protected boolean canEqual(final Object other) {
return other instanceof NCMessageWrapper;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $signalingMessage = this.getSignalingMessage();
result = result * PRIME + ($signalingMessage == null ? 43 : $signalingMessage.hashCode());
final Object $ev = this.getEv();
result = result * PRIME + ($ev == null ? 43 : $ev.hashCode());
final Object $sessionId = this.getSessionId();
result = result * PRIME + ($sessionId == null ? 43 : $sessionId.hashCode());
return result;
}
public String toString() {
return "NCMessageWrapper(signalingMessage=" + this.getSignalingMessage() + ", ev=" + this.getEv() + ", sessionId=" + this.getSessionId() + ")";
}
}

View File

@ -0,0 +1,42 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class NCMessageWrapper(
@JsonField(name = ["fn"])
var signalingMessage: NCSignalingMessage? = null,
/** always a "message" */
@JsonField(name = ["ev"])
var ev: String? = null,
@JsonField(name = ["sessionId"])
var sessionId: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null)
}

View File

@ -1,176 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
@JsonObject
@Parcel
public class NCSignalingMessage {
@JsonField(name = "from")
String from;
@JsonField(name = "to")
String to;
@JsonField(name = "type")
String type;
@JsonField(name = "payload")
NCMessagePayload payload;
@JsonField(name = "roomType")
String roomType;
@JsonField(name = "sid")
String sid;
@JsonField(name = "prefix")
String prefix;
public String getFrom() {
return this.from;
}
public String getTo() {
return this.to;
}
public String getType() {
return this.type;
}
public NCMessagePayload getPayload() {
return this.payload;
}
public String getRoomType() {
return this.roomType;
}
public String getSid() {
return this.sid;
}
public String getPrefix() {
return this.prefix;
}
public void setFrom(String from) {
this.from = from;
}
public void setTo(String to) {
this.to = to;
}
public void setType(String type) {
this.type = type;
}
public void setPayload(NCMessagePayload payload) {
this.payload = payload;
}
public void setRoomType(String roomType) {
this.roomType = roomType;
}
public void setSid(String sid) {
this.sid = sid;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof NCSignalingMessage)) {
return false;
}
final NCSignalingMessage other = (NCSignalingMessage) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$from = this.getFrom();
final Object other$from = other.getFrom();
if (this$from == null ? other$from != null : !this$from.equals(other$from)) {
return false;
}
final Object this$to = this.getTo();
final Object other$to = other.getTo();
if (this$to == null ? other$to != null : !this$to.equals(other$to)) {
return false;
}
final Object this$type = this.getType();
final Object other$type = other.getType();
if (this$type == null ? other$type != null : !this$type.equals(other$type)) {
return false;
}
final Object this$payload = this.getPayload();
final Object other$payload = other.getPayload();
if (this$payload == null ? other$payload != null : !this$payload.equals(other$payload)) {
return false;
}
final Object this$roomType = this.getRoomType();
final Object other$roomType = other.getRoomType();
if (this$roomType == null ? other$roomType != null : !this$roomType.equals(other$roomType)) {
return false;
}
final Object this$sid = this.getSid();
final Object other$sid = other.getSid();
if (this$sid == null ? other$sid != null : !this$sid.equals(other$sid)) {
return false;
}
final Object this$prefix = this.getPrefix();
final Object other$prefix = other.getPrefix();
return this$prefix == null ? other$prefix == null : this$prefix.equals(other$prefix);
}
protected boolean canEqual(final Object other) {
return other instanceof NCSignalingMessage;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $from = this.getFrom();
result = result * PRIME + ($from == null ? 43 : $from.hashCode());
final Object $to = this.getTo();
result = result * PRIME + ($to == null ? 43 : $to.hashCode());
final Object $type = this.getType();
result = result * PRIME + ($type == null ? 43 : $type.hashCode());
final Object $payload = this.getPayload();
result = result * PRIME + ($payload == null ? 43 : $payload.hashCode());
final Object $roomType = this.getRoomType();
result = result * PRIME + ($roomType == null ? 43 : $roomType.hashCode());
final Object $sid = this.getSid();
result = result * PRIME + ($sid == null ? 43 : $sid.hashCode());
final Object $prefix = this.getPrefix();
result = result * PRIME + ($prefix == null ? 43 : $prefix.hashCode());
return result;
}
public String toString() {
return "NCSignalingMessage(from=" + this.getFrom() + ", to=" + this.getTo() + ", type=" + this.getType() + ", payload=" + this.getPayload() + ", roomType=" + this.getRoomType() + ", sid=" + this.getSid() + ", prefix=" + this.getPrefix() + ")";
}
}

View File

@ -0,0 +1,49 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class NCSignalingMessage(
@JsonField(name = ["from"])
var from: String? = null,
@JsonField(name = ["to"])
var to: String? = null,
@JsonField(name = ["type"])
var type: String? = null,
@JsonField(name = ["payload"])
var payload: NCMessagePayload? = null,
@JsonField(name = ["roomType"])
var roomType: String? = null,
@JsonField(name = ["sid"])
var sid: String? = null,
@JsonField(name = ["prefix"])
var prefix: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null, null, null, null, null)
}

View File

@ -1,93 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
/**
* Created by mdjanic on 30/10/2017.
*/
@JsonObject
public class Signaling {
@JsonField(name = "type")
String type;
//can be NCMessageWrapper or List<HashMap<String,String>>
@JsonField(name = "data")
Object messageWrapper;
public String getType() {
return this.type;
}
public Object getMessageWrapper() {
return this.messageWrapper;
}
public void setType(String type) {
this.type = type;
}
public void setMessageWrapper(Object messageWrapper) {
this.messageWrapper = messageWrapper;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Signaling)) {
return false;
}
final Signaling other = (Signaling) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$type = this.getType();
final Object other$type = other.getType();
if (this$type == null ? other$type != null : !this$type.equals(other$type)) {
return false;
}
final Object this$messageWrapper = this.getMessageWrapper();
final Object other$messageWrapper = other.getMessageWrapper();
return this$messageWrapper == null ? other$messageWrapper == null : this$messageWrapper.equals(other$messageWrapper);
}
protected boolean canEqual(final Object other) {
return other instanceof Signaling;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $type = this.getType();
result = result * PRIME + ($type == null ? 43 : $type.hashCode());
final Object $messageWrapper = this.getMessageWrapper();
result = result * PRIME + ($messageWrapper == null ? 43 : $messageWrapper.hashCode());
return result;
}
public String toString() {
return "Signaling(type=" + this.getType() + ", messageWrapper=" + this.getMessageWrapper() + ")";
}
}

View File

@ -0,0 +1,43 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.AnyParceler
import kotlinx.android.parcel.Parcelize
import kotlinx.android.parcel.TypeParceler
@Parcelize
@JsonObject
@TypeParceler<Any?, AnyParceler>
data class Signaling(
@JsonField(name = ["type"])
var type: String? = null,
/** can be NCMessageWrapper or List<HashMap<String,String>> */
@JsonField(name = ["data"])
var messageWrapper: Any? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,74 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
import java.util.List;
@JsonObject
public class SignalingOCS extends GenericOCS {
@JsonField(name = "data")
List<Signaling> signalings;
public List<Signaling> getSignalings() {
return this.signalings;
}
public void setSignalings(List<Signaling> signalings) {
this.signalings = signalings;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof SignalingOCS)) {
return false;
}
final SignalingOCS other = (SignalingOCS) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$signalings = this.getSignalings();
final Object other$signalings = other.getSignalings();
return this$signalings == null ? other$signalings == null : this$signalings.equals(other$signalings);
}
protected boolean canEqual(final Object other) {
return other instanceof SignalingOCS;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $signalings = this.getSignalings();
result = result * PRIME + ($signalings == null ? 43 : $signalings.hashCode());
return result;
}
public String toString() {
return "SignalingOCS(signalings=" + this.getSignalings() + ")";
}
}

View File

@ -0,0 +1,40 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import com.nextcloud.talk.models.json.generic.GenericMeta
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
class SignalingOCS(
@JsonField(name = ["meta"])
var meta: GenericMeta?,
@JsonField(name = ["data"])
var signalings: List<Signaling>? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null)
}

View File

@ -1,71 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
@JsonObject
public class SignalingOverall {
@JsonField(name = "ocs")
SignalingOCS ocs;
public SignalingOCS getOcs() {
return this.ocs;
}
public void setOcs(SignalingOCS ocs) {
this.ocs = ocs;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof SignalingOverall)) {
return false;
}
final SignalingOverall other = (SignalingOverall) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$ocs = this.getOcs();
final Object other$ocs = other.getOcs();
return this$ocs == null ? other$ocs == null : this$ocs.equals(other$ocs);
}
protected boolean canEqual(final Object other) {
return other instanceof SignalingOverall;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $ocs = this.getOcs();
result = result * PRIME + ($ocs == null ? 43 : $ocs.hashCode());
return result;
}
public String toString() {
return "SignalingOverall(ocs=" + this.getOcs() + ")";
}
}

View File

@ -0,0 +1,37 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
class SignalingOverall(
@JsonField(name = ["ocs"])
var ocs: SignalingOCS? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null)
}

View File

@ -1,129 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import java.util.List;
@JsonObject
public class IceServer {
@Deprecated
@JsonField(name = "url")
String url;
@JsonField(name = "urls")
List<String> urls;
@JsonField(name = "username")
String username;
@JsonField(name = "credential")
String credential;
@Deprecated
public String getUrl() {
return this.url;
}
public List<String> getUrls() {
return this.urls;
}
public String getUsername() {
return this.username;
}
public String getCredential() {
return this.credential;
}
public void setUrl(String url) {
this.url = url;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
public void setUsername(String username) {
this.username = username;
}
public void setCredential(String credential) {
this.credential = credential;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof IceServer)) {
return false;
}
final IceServer other = (IceServer) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$url = this.getUrl();
final Object other$url = other.getUrl();
if (this$url == null ? other$url != null : !this$url.equals(other$url)) {
return false;
}
final Object this$urls = this.getUrls();
final Object other$urls = other.getUrls();
if (this$urls == null ? other$urls != null : !this$urls.equals(other$urls)) {
return false;
}
final Object this$username = this.getUsername();
final Object other$username = other.getUsername();
if (this$username == null ? other$username != null : !this$username.equals(other$username)) {
return false;
}
final Object this$credential = this.getCredential();
final Object other$credential = other.getCredential();
return this$credential == null ? other$credential == null : this$credential.equals(other$credential);
}
protected boolean canEqual(final Object other) {
return other instanceof IceServer;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $url = this.getUrl();
result = result * PRIME + ($url == null ? 43 : $url.hashCode());
final Object $urls = this.getUrls();
result = result * PRIME + ($urls == null ? 43 : $urls.hashCode());
final Object $username = this.getUsername();
result = result * PRIME + ($username == null ? 43 : $username.hashCode());
final Object $credential = this.getCredential();
result = result * PRIME + ($credential == null ? 43 : $credential.hashCode());
return result;
}
public String toString() {
return "IceServer(url=" + this.getUrl() + ", urls=" + this.getUrls() + ", username=" + this.getUsername() + ", credential=" + this.getCredential() + ")";
}
}

View File

@ -0,0 +1,44 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling.settings
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class IceServer(
@Deprecated("")
@JsonField(name = ["url"])
var url: String? = null,
@JsonField(name = ["urls"])
var urls: List<String>? = null,
@JsonField(name = ["username"])
var username: String? = null,
@JsonField(name = ["credential"])
var credential: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null)
}

View File

@ -1,127 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import java.util.List;
@JsonObject
public class Settings {
@JsonField(name = "stunservers")
List<IceServer> stunServers;
@JsonField(name = "turnservers")
List<IceServer> turnServers;
@JsonField(name = "server")
String externalSignalingServer;
@JsonField(name = "ticket")
String externalSignalingTicket;
public List<IceServer> getStunServers() {
return this.stunServers;
}
public List<IceServer> getTurnServers() {
return this.turnServers;
}
public String getExternalSignalingServer() {
return this.externalSignalingServer;
}
public String getExternalSignalingTicket() {
return this.externalSignalingTicket;
}
public void setStunServers(List<IceServer> stunServers) {
this.stunServers = stunServers;
}
public void setTurnServers(List<IceServer> turnServers) {
this.turnServers = turnServers;
}
public void setExternalSignalingServer(String externalSignalingServer) {
this.externalSignalingServer = externalSignalingServer;
}
public void setExternalSignalingTicket(String externalSignalingTicket) {
this.externalSignalingTicket = externalSignalingTicket;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Settings)) {
return false;
}
final Settings other = (Settings) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$stunServers = this.getStunServers();
final Object other$stunServers = other.getStunServers();
if (this$stunServers == null ? other$stunServers != null : !this$stunServers.equals(other$stunServers)) {
return false;
}
final Object this$turnServers = this.getTurnServers();
final Object other$turnServers = other.getTurnServers();
if (this$turnServers == null ? other$turnServers != null : !this$turnServers.equals(other$turnServers)) {
return false;
}
final Object this$externalSignalingServer = this.getExternalSignalingServer();
final Object other$externalSignalingServer = other.getExternalSignalingServer();
if (this$externalSignalingServer == null ? other$externalSignalingServer != null : !this$externalSignalingServer.equals(other$externalSignalingServer)) {
return false;
}
final Object this$externalSignalingTicket = this.getExternalSignalingTicket();
final Object other$externalSignalingTicket = other.getExternalSignalingTicket();
return this$externalSignalingTicket == null ? other$externalSignalingTicket == null : this$externalSignalingTicket.equals(other$externalSignalingTicket);
}
protected boolean canEqual(final Object other) {
return other instanceof Settings;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $stunServers = this.getStunServers();
result = result * PRIME + ($stunServers == null ? 43 : $stunServers.hashCode());
final Object $turnServers = this.getTurnServers();
result = result * PRIME + ($turnServers == null ? 43 : $turnServers.hashCode());
final Object $externalSignalingServer = this.getExternalSignalingServer();
result = result * PRIME + ($externalSignalingServer == null ? 43 : $externalSignalingServer.hashCode());
final Object $externalSignalingTicket = this.getExternalSignalingTicket();
result = result * PRIME + ($externalSignalingTicket == null ? 43 : $externalSignalingTicket.hashCode());
return result;
}
public String toString() {
return "Settings(stunServers=" + this.getStunServers() + ", turnServers=" + this.getTurnServers() + ", externalSignalingServer=" + this.getExternalSignalingServer() + ", externalSignalingTicket=" + this.getExternalSignalingTicket() + ")";
}
}

View File

@ -0,0 +1,43 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2022 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling.settings
import android.os.Parcelable
import com.bluelinelabs.logansquare.annotation.JsonField
import com.bluelinelabs.logansquare.annotation.JsonObject
import kotlinx.android.parcel.Parcelize
@Parcelize
@JsonObject
data class Settings(
@JsonField(name = ["stunservers"])
var stunServers: List<IceServer>? = null,
@JsonField(name = ["turnservers"])
var turnServers: List<IceServer>? = null,
@JsonField(name = ["server"])
var externalSignalingServer: String? = null,
@JsonField(name = ["ticket"])
var externalSignalingTicket: String? = null
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null)
}

View File

@ -1,72 +0,0 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.models.json.generic.GenericOCS;
@JsonObject
public class SignalingSettingsOcs extends GenericOCS {
@JsonField(name = "data")
Settings settings;
public Settings getSettings() {
return this.settings;
}
public void setSettings(Settings settings) {
this.settings = settings;
}
public boolean equals(final Object o) {
if (o == this) {
return true;
}
if (!(o instanceof SignalingSettingsOcs)) {
return false;
}
final SignalingSettingsOcs other = (SignalingSettingsOcs) o;
if (!other.canEqual((Object) this)) {
return false;
}
final Object this$settings = this.getSettings();
final Object other$settings = other.getSettings();
return this$settings == null ? other$settings == null : this$settings.equals(other$settings);
}
protected boolean canEqual(final Object other) {
return other instanceof SignalingSettingsOcs;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $settings = this.getSettings();
result = result * PRIME + ($settings == null ? 43 : $settings.hashCode());
return result;
}
public String toString() {
return "SignalingSettingsOcs(settings=" + this.getSettings() + ")";
}
}

Some files were not shown because too many files have changed in this diff Show More