Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
chat
RocketChatMobileEngine
Commits
f55f8044
Commit
f55f8044
authored
Feb 22, 2019
by
armin
Browse files
faster insertion of channels into view
parent
5a15fd3b
Changes
6
Show whitespace changes
Inline
Side-by-side
CustomModels/channelmodel.cpp
View file @
f55f8044
...
...
@@ -58,8 +58,9 @@ QVariant ChannelModel::data( const QModelIndex &index, int role ) const
if
(
message
->
getMessageType
()
==
QStringLiteral
(
"file"
)
||
message
->
getMessageType
()
==
QStringLiteral
(
"image"
)
||
message
->
getMessageType
()
==
QStringLiteral
(
"audio"
)
)
{
return
tr
(
QByteArrayLiteral
(
"file upload"
)
);
}
auto
messageText
=
message
->
getMessageString
();
messageText
=
messageText
.
replace
(
"<img height='20' width='20'"
,
"<img height='10' width='10'"
);
auto
messageText
=
message
->
getMessageString
();
messageText
=
messageText
.
replace
(
"<img height='20' width='20'"
,
"<img height='10' width='10'"
);
return
messageText
;
}
...
...
@@ -147,13 +148,15 @@ bool ChannelModel::addChannel( const QSharedPointer<RocketChatChannel> &channel
connect
(
channel
.
data
(),
&
RocketChatChannel
::
unreadMessagesChanged
,
this
,
&
ChannelModel
::
onUnreadMessageChanged
,
Qt
::
UniqueConnection
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
dataChanged
,
this
,
&
ChannelModel
::
onDataChanged
,
Qt
::
UniqueConnection
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
channelDeleted
,
this
,
&
ChannelModel
::
onDeleted
,
Qt
::
UniqueConnection
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
updatedChanged
,
this
,
&
ChannelModel
::
onChannelOrderChanged
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
updatedChanged
,
this
,
&
ChannelModel
::
onChannelOrderChanged
);
duplicateCheck
.
insert
(
channel
->
getRoomId
()
);
int
pos
=
channelList
.
findPosition
(
channel
);
if
(
pos
<
0
){
if
(
pos
<
0
)
{
pos
=
0
;
}
beginInsertRows
(
QModelIndex
(),
pos
,
pos
);
channelList
.
insertSort
(
channel
);
endInsertRows
();
...
...
@@ -165,32 +168,35 @@ bool ChannelModel::addChannel( const QSharedPointer<RocketChatChannel> &channel
}
bool
ChannelModel
::
addChannelsSlot
(
const
QVector
<
QSharedPointer
<
RocketChatChannel
>
>
&
pChannels
)
bool
ChannelModel
::
addChannelsSlot
(
const
QVector
<
QSharedPointer
<
RocketChatChannel
>
>
&
pChannels
)
{
// beginResetModel();
int
from
=-
1
;
int
from
=
-
1
;
int
to
=
-
1
;
for
(
const
auto
&
channel
:
pChannels
){
if
(
!
channel
.
isNull
()
&&
channel
->
getRoomId
()
!=
""
&&
!
duplicateCheck
.
contains
(
channel
->
getRoomId
()
)
)
{
for
(
const
auto
&
channel
:
pChannels
)
{
if
(
!
channel
.
isNull
()
&&
!
channel
->
getRoomId
().
isEmpty
()
&&
!
duplicateCheck
.
contains
(
channel
->
getRoomId
()
)
)
{
//connect( channel.data(), &RocketChatChannel::messageAdded, this, &ChannelModel::onNewerMessage, Qt::UniqueConnection );
connect
(
channel
.
data
(),
&
RocketChatChannel
::
unreadMessagesChanged
,
this
,
&
ChannelModel
::
onUnreadMessageChanged
,
Qt
::
UniqueConnection
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
dataChanged
,
this
,
&
ChannelModel
::
onDataChanged
,
Qt
::
UniqueConnection
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
channelDeleted
,
this
,
&
ChannelModel
::
onDeleted
,
Qt
::
UniqueConnection
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
updatedChanged
,
this
,
&
ChannelModel
::
onChannelOrderChanged
);
connect
(
channel
.
data
(),
&
RocketChatChannel
::
updatedChanged
,
this
,
&
ChannelModel
::
onChannelOrderChanged
);
duplicateCheck
.
insert
(
channel
->
getRoomId
()
);
auto
index
=
channelList
.
insertSort
(
channel
);
if
(
from
==
-
1
)
{
if
(
from
==
-
1
)
{
from
=
index
;
to
=
index
;
}
if
(
index
<
from
){
if
(
index
<
from
)
{
from
=
index
;
}
else
if
(
index
>
to
)
{
}
else
if
(
index
>
to
)
{
to
=
index
;
}
}
}
beginInsertRows
(
QModelIndex
(),
from
,
to
);
endInsertRows
();
// endResetModel();
...
...
@@ -308,14 +314,13 @@ void ChannelModel::onDeleted( const QString &pId, bool deleted )
}
void
ChannelModel
::
onChannelOrderChanged
(
const
QString
&
pId
,
qint64
pTimestamp
)
void
ChannelModel
::
onChannelOrderChanged
(
const
QString
&
pId
,
qint64
pTimestamp
)
{
static
int
counter
=
0
;
counter
++
;
qDebug
()
<<
counter
;
beginResetModel
();
channelList
.
reOrder
();
endResetModel
();
auto
changed
=
channelList
.
reOrder
();
emit
dataChanged
(
createIndex
(
std
::
get
<
0
>
(
changed
),
0
),
createIndex
(
std
::
get
<
1
>
(
changed
),
0
)
);
}
void
ChannelModel
::
addChannelSlot
(
const
QSharedPointer
<
RocketChatChannel
>
&
channel
)
...
...
container/sortedvector.cpp
View file @
f55f8044
...
...
@@ -35,13 +35,9 @@ int SortedVector<T>::insertSort( const QSharedPointer<T> &pointer )
return
(
*
first
)
>
(
*
second
);
}
);
row
=
std
::
distance
(
this
->
begin
(),
elementSmallerThanNew
);
row
=
std
::
distance
(
this
->
begin
(),
elementSmallerThanNew
);
this
->
insert
(
elementSmallerThanNew
,
pointer
);
if
(
row
<
0
||
row
>
1000
){
qDebug
()
<<
elementSmallerThanNew
;
qDebug
()
<<
"error"
;
}
}
return
row
;
...
...
@@ -54,7 +50,7 @@ int SortedVector<T>::findInsertPosition( const QSharedPointer<T> &pointer ) cons
return
(
*
first
)
<
(
*
second
);
}
);
return
elementSmallerThanNew
-
this
->
begin
(
);
;
return
std
::
distance
(
this
->
begin
(),
elementSmallerThanNew
);
}
...
...
@@ -62,14 +58,39 @@ template<typename T>
int
SortedVector
<
T
>::
findPosition
(
const
QSharedPointer
<
T
>
&
pointer
)
const
{
auto
pos
=
find
(
this
->
begin
(),
this
->
end
(),
pointer
);
return
pos
-
this
->
begin
();
return
std
::
distance
(
this
->
begin
(
),
pos
);
}
template
<
typename
T
>
void
SortedVector
<
T
>::
reOrder
()
std
::
tuple
<
int
,
int
>
SortedVector
<
T
>::
reOrder
()
{
std
::
vector
<
QSharedPointer
<
T
>>
indices
(
this
->
size
()
);
for
(
const
auto
&
elem
:
*
this
)
{
indices
.
push_back
(
elem
);
}
std
::
sort
(
this
->
begin
(),
this
->
end
(),
[
=
](
const
QSharedPointer
<
T
>
&
first
,
const
QSharedPointer
<
T
>
&
second
)
->
bool
{
return
(
*
first
)
>
(
*
second
);
}
);
int
from
=
-
1
;
int
to
=
-
1
;
for
(
int
i
=
0
;
i
<
this
->
size
()
-
1
;
i
++
)
{
if
(
indices
[
i
]
!=
(
*
this
)[
i
]
)
{
from
=
i
;
break
;
}
}
for
(
int
i
=
this
->
size
()
-
1
;
i
>=
0
;
i
--
)
{
if
(
indices
[
i
]
!=
(
*
this
)[
i
]
)
{
to
=
i
;
break
;
}
}
return
std
::
make_tuple
(
from
,
to
);
}
container/sortedvector.h
View file @
f55f8044
...
...
@@ -26,9 +26,8 @@
#include
<QSharedPointer>
#include
<QMutex>
struct
SortedVectorProperties
{
enum
class
sortOrder
{
struct
SortedVectorProperties
{
enum
class
sortOrder
{
asc
,
dsc
};
...
...
@@ -40,14 +39,14 @@ template<typename T> class SortedVector : public QVector<QSharedPointer<T>>
int
insertSort
(
const
QSharedPointer
<
T
>
&
);
int
findInsertPosition
(
const
QSharedPointer
<
T
>
&
)
const
;
int
findPosition
(
const
QSharedPointer
<
T
>
&
)
const
;
void
reOrder
();
std
::
tuple
<
int
,
int
>
reOrder
();
bool
operator
=
(
const
QVector
<
QSharedPointer
<
T
>>
&
o
)
{
this
->
clear
();
this
->
append
(
o
);
return
true
;
}
private:
private:
mutable
QMutex
mSortMutex
;
};
#include
"sortedvector.cpp"
...
...
repos/entities/rocketchatchannel.cpp
View file @
f55f8044
...
...
@@ -83,7 +83,7 @@ const QString &RocketChatChannel::getName() const
void
RocketChatChannel
::
setName
(
const
QString
&
value
)
{
if
(
mName
!=
value
)
{
if
(
mName
!=
value
&&
!
value
.
isEmpty
()
)
{
mName
=
value
;
emit
dataChanged
(
mName
,
"name"
);
}
...
...
@@ -167,9 +167,11 @@ QList<QSharedPointer<RocketChatMessage>> RocketChatChannel::addMessages( const Q
}
}
}
if
(
newMessages
.
count
()){
if
(
newMessages
.
count
()
)
{
// emit messageAdded( getRoomId(), 0 );
}
return
newMessages
;
}
...
...
@@ -192,7 +194,8 @@ unsigned int RocketChatChannel::getUnreadMessages() const
void
RocketChatChannel
::
setUnreadMessages
(
unsigned
int
value
)
{
qDebug
()
<<
"set unread to: "
<<
value
;
if
(
mUnreadMessages
!=
value
){
if
(
mUnreadMessages
!=
value
)
{
mUnreadMessages
=
value
;
emit
unreadMessagesChanged
(
mRoomId
,
value
);
}
...
...
@@ -205,7 +208,7 @@ const QString &RocketChatChannel::getType() const
void
RocketChatChannel
::
setType
(
const
QString
&
pType
)
{
if
(
mType
!=
pType
)
{
if
(
mType
!=
pType
&&
!
pType
.
isEmpty
()
)
{
mType
=
pType
;
emit
dataChanged
(
mRoomId
,
"type"
);
}
...
...
@@ -290,7 +293,7 @@ const QString &RocketChatChannel::getOwnerName() const
void
RocketChatChannel
::
setOwnerName
(
const
QString
&
pOwner
)
{
if
(
mOwnerName
!=
pOwner
)
{
if
(
mOwnerName
!=
pOwner
&&
!
pOwner
.
isEmpty
()
)
{
mOwnerName
=
pOwner
;
emit
dataChanged
(
mRoomId
,
"ownerName"
);
}
...
...
@@ -303,7 +306,7 @@ const QString &RocketChatChannel::getOwnerId() const
void
RocketChatChannel
::
setOwnerId
(
const
QString
&
ownerId
)
{
if
(
mOwnerId
!=
ownerId
)
{
if
(
mOwnerId
!=
ownerId
&&
!
ownerId
.
isEmpty
()
)
{
mOwnerId
=
ownerId
;
emit
dataChanged
(
mRoomId
,
"ownerId"
);
}
...
...
@@ -316,7 +319,7 @@ const QString &RocketChatChannel::getUsername() const
void
RocketChatChannel
::
setUsername
(
const
QString
&
username
)
{
if
(
mUsername
!=
username
)
{
if
(
mUsername
!=
username
&&
!
username
.
isEmpty
()
)
{
mUsername
=
username
;
emit
dataChanged
(
mRoomId
,
"username"
);
}
...
...
@@ -329,7 +332,7 @@ const QSharedPointer<RocketChatUser> &RocketChatChannel::getChatPartner() const
void
RocketChatChannel
::
setChatPartner
(
const
QSharedPointer
<
RocketChatUser
>
&
chatPartner
)
{
if
(
mChatPartner
!=
chatPartner
)
{
if
(
mChatPartner
!=
chatPartner
&&
!
chatPartner
.
isNull
()
)
{
mChatPartner
=
chatPartner
;
connect
(
chatPartner
.
data
(),
&
RocketChatUser
::
statusChanged
,
this
,
[
=
]()
{
emit
dataChanged
(
mRoomId
,
"userStatus"
);
...
...
@@ -344,7 +347,7 @@ const QString &RocketChatChannel::getChatPartnerId() const
void
RocketChatChannel
::
setChatPartnerId
(
const
QString
&
chatPartnerId
)
{
if
(
mChatPartnerId
!=
chatPartnerId
)
{
if
(
mChatPartnerId
!=
chatPartnerId
&&
!
chatPartnerId
.
isEmpty
()
)
{
mChatPartnerId
=
chatPartnerId
;
// emit dataChanged( mRoomId, "username" );
}
...
...
@@ -357,7 +360,7 @@ QSharedPointer<TempFile> RocketChatChannel::getAvatarImg() const
void
RocketChatChannel
::
setAvatarImg
(
const
QSharedPointer
<
TempFile
>
&
pAvatar
)
{
if
(
mAvatarImg
!=
pAvatar
)
{
if
(
mAvatarImg
!=
pAvatar
&&
!
pAvatar
.
isNull
()
)
{
mAvatarImg
=
pAvatar
;
emit
dataChanged
(
mRoomId
,
"avatarImg"
);
}
...
...
@@ -371,10 +374,11 @@ qint64 RocketChatChannel::getUpdatedAt() const
void
RocketChatChannel
::
setUpdatedAt
(
const
qint64
&
updatedAt
)
{
//skip signal the first time
if
(
mUpdatedAt
!=
updatedAt
&&
updatedAt
!=
-
1
)
{
if
(
mUpdatedAt
!=
-
1
){
emit
updatedChanged
(
mRoomId
,
updatedAt
);
if
(
mUpdatedAt
!=
updatedAt
&&
updatedAt
!=
-
1
)
{
if
(
mUpdatedAt
!=
-
1
)
{
emit
updatedChanged
(
mRoomId
,
updatedAt
);
}
mUpdatedAt
=
updatedAt
;
}
}
...
...
@@ -402,34 +406,39 @@ void RocketChatChannel::setBlocked( bool blocked )
}
}
QStringList
RocketChatChannel
::
whiteList
(
const
QList
<
QString
>
ids
,
const
qint64
newest
,
const
qint64
oldest
)
QStringList
RocketChatChannel
::
whiteList
(
const
QList
<
QString
>
ids
,
const
qint64
newest
,
const
qint64
oldest
)
{
auto
idSet
=
ids
.
toSet
();
auto
currentList
=
mMessages
.
getElements
().
keys
().
toSet
();
auto
blacklist
=
currentList
-
idSet
;
QList
<
QString
>
buffer
=
{};
std
::
copy_if
(
blacklist
.
begin
(),
blacklist
.
end
(),
std
::
back_inserter
(
buffer
),
[
=
](
const
QString
id
)
{
std
::
copy_if
(
blacklist
.
begin
(),
blacklist
.
end
(),
std
::
back_inserter
(
buffer
),
[
=
](
const
QString
id
)
{
bool
keep
=
true
;
if
(
mMessages
.
contains
(
id
)
&&
mMessages
.
get
(
id
)
->
getRoomId
()
==
getRoomId
()){
auto
message
=
mMessages
.
get
(
id
);
keep
=
message
->
inTimeIntervall
(
newest
,
oldest
);
if
(
mMessages
.
contains
(
id
)
&&
mMessages
.
get
(
id
)
->
getRoomId
()
==
getRoomId
()
)
{
auto
message
=
mMessages
.
get
(
id
);
keep
=
message
->
inTimeIntervall
(
newest
,
oldest
);
}
return
keep
;
}
);
blacklist
=
buffer
.
toSet
();
for
(
QString
id
:
blacklist
){
mMessages
.
remove
(
id
);
for
(
QString
id
:
blacklist
)
{
mMessages
.
remove
(
id
);
}
return
blacklist
.
toList
();
}
void
RocketChatChannel
::
deleteMessage
(
const
QString
id
)
void
RocketChatChannel
::
deleteMessage
(
const
QString
id
)
{
emit
messageDeleted
(
getRoomId
(),
id
);
if
(
mMessages
.
contains
(
id
)){
mMessages
.
remove
(
id
);
emit
messageDeleted
(
getRoomId
(),
id
);
if
(
mMessages
.
contains
(
id
)
)
{
mMessages
.
remove
(
id
);
}
...
...
services/messageservice.cpp
View file @
f55f8044
...
...
@@ -110,7 +110,7 @@ void MessageService::persistMessages( const MessageList &pMessage )
void
MessageService
::
persist
()
{
if
(
mServer
)
{
if
(
mServer
)
{
mPersistanceLayer
->
transaction
();
auto
channels
=
mServer
->
getChannels
();
...
...
@@ -133,7 +133,7 @@ void MessageService::persist()
QSharedPointer
<
RocketChatMessage
>
MessageService
::
parseMessage
(
const
QJsonObject
&
pMessageData
,
bool
linkify
)
{
if
(
mServer
)
{
if
(
mServer
)
{
ChatMessage
message
(
nullptr
);
QString
userId
=
mServer
->
getUserId
();
bool
blocked
=
false
;
...
...
@@ -147,7 +147,7 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
msgString
=
Utils
::
linkiFy
(
msgString
);
msgString
=
msgString
.
replace
(
QStringLiteral
(
"
\n
"
),
QStringLiteral
(
"<br>"
)
);
msgString
=
Utils
::
escapeHtml
(
msgString
);
msgString
=
Utils
::
escapeHtml
(
msgString
);
msgString
=
Utils
::
emojiFy
(
msgString
,
mEmojiRepo
);
}
...
...
@@ -222,7 +222,7 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
};
auto
avatarUrl
=
"/avatar/"
+
author
+
".jpg"
;
auto
avatarRequest
=
QSharedPointer
<
FileRequest
>::
create
(
avatarUrl
,
"temp"
,
then
,
true
);
mFileService
->
getFileRessource
(
avatarRequest
);
//
mFileService->getFileRessource( avatarRequest );
message
->
setAuthor
(
author
);
message
->
setFormattedDate
(
formattedDate
);
...
...
@@ -244,7 +244,8 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
if
(
!
blocked
)
{
return
message
;
}
}
}
return
nullptr
;
}
...
...
@@ -258,7 +259,7 @@ void MessageService::addUserToBlockList( const QString &pId )
void
MessageService
::
addChannelToBlockList
(
const
QString
&
pId
)
{
if
(
mServer
)
{
if
(
mServer
)
{
QString
roomId
=
pId
;
QString
userId
=
mServer
->
getUserId
();
QString
otherUserId
=
roomId
.
replace
(
userId
,
""
);
...
...
@@ -268,7 +269,7 @@ void MessageService::addChannelToBlockList( const QString &pId )
void
MessageService
::
searchMessage
(
const
QString
&
pTerm
,
const
QString
&
pRoom
)
{
if
(
mServer
)
{
if
(
mServer
)
{
DdpCallback
ddpSuccess
=
[
=
](
const
QJsonObject
&
pResponse
,
MeteorDDP
*
pDdp
)
{
Q_UNUSED
(
pDdp
)
...
...
@@ -301,7 +302,7 @@ void MessageService::searchMessage( const QString &pTerm, const QString &pRoom )
void
MessageService
::
loadHistoryFromServer
(
const
QSharedPointer
<
LoadHistoryRequestContainer
>
&
pContainer
)
{
if
(
!
pContainer
.
isNull
()
&&
mServer
)
{
if
(
!
pContainer
.
isNull
()
&&
mServer
)
{
auto
requests
=
pContainer
->
getRequests
();
pContainer
->
mAlredayReceived
=
0
;
...
...
@@ -349,7 +350,7 @@ void MessageService::loadHistoryFromServer( const QSharedPointer<LoadHistoryRequ
auto
messageObject
=
parseMessage
(
currentMessage
.
toObject
(),
true
);
if
(
!
messageObject
.
isNull
()
&&
!
duplicateCheck
->
contains
(
messageObject
->
getId
()
))
{
if
(
!
messageObject
.
isNull
()
&&
!
duplicateCheck
->
contains
(
messageObject
->
getId
()
)
)
{
list
->
insert
(
messageObject
->
getRoomId
(),
messageObject
);
duplicateCheck
->
insert
(
messageObject
->
getId
()
);
}
...
...
@@ -575,26 +576,31 @@ QList<QSharedPointer<RocketChatAttachment>> MessageService::processAttachments(
return
attachmentsList
;
}
void
MessageService
::
deleteMessagesNotInList
(
MessageMap
*
pMessages
,
QString
pChannelId
,
bool
pCheckForYounger
)
void
MessageService
::
deleteMessagesNotInList
(
MessageMap
*
pMessages
,
QString
pChannelId
,
bool
pCheckForYounger
)
{
QMap
<
qint64
,
QSharedPointer
<
RocketChatMessage
>>
timeIndex
;
QMap
<
qint64
,
QSharedPointer
<
RocketChatMessage
>>
timeIndex
;
QList
<
QString
>
ids
;
if
(
mServer
){
auto
channel
=
mServer
->
getChannels
()
->
get
(
pChannelId
);
for
(
const
auto
message
:
pMessages
->
values
(
pChannelId
)){
if
(
mServer
)
{
auto
channel
=
mServer
->
getChannels
()
->
get
(
pChannelId
);
for
(
const
auto
message
:
pMessages
->
values
(
pChannelId
)
)
{
timeIndex
[
message
->
getTimestamp
()]
=
message
;
ids
.
append
(
message
->
getId
());
ids
.
append
(
message
->
getId
()
);
}
qint64
oldest
=
timeIndex
.
first
()
->
getTimestamp
();
qint64
newest
=
timeIndex
.
last
()
->
getTimestamp
();
qint64
youngest
=
channel
->
getYoungestMessage
()
->
getTimestamp
();
if
(
pCheckForYounger
)
if
(
pCheckForYounger
)
{
newest
=
newest
<
youngest
?
youngest
:
newest
;
}
auto
blacklist
=
channel
->
whiteList
(
ids
,
newest
,
oldest
);
auto
blacklist
=
channel
->
whiteList
(
ids
,
newest
,
oldest
);
for
(
QString
messageId
:
blacklist
){
mPersistanceLayer
->
deleteMessage
(
messageId
);
for
(
QString
messageId
:
blacklist
)
{
mPersistanceLayer
->
deleteMessage
(
messageId
);
}
}
}
services/rocketchatchannelservice.cpp
View file @
f55f8044
...
...
@@ -38,7 +38,7 @@ RocketChatChannelService::RocketChatChannelService( QObject *parent, RocketChatS
QSharedPointer
<
RocketChatChannel
>
RocketChatChannelService
::
createChannelObject
(
const
QString
&
pRoomId
,
const
QString
&
pName
,
const
QString
&
pType
,
bool
insertIntoRepo
)
{
if
(
mServer
)
{
if
(
mServer
)
{
auto
ptr
=
QSharedPointer
<
RocketChatChannel
>::
create
(
mServer
,
mMessageService
,
pRoomId
,
pName
,
pType
);
if
(
Q_LIKELY
(
mChannels
)
)
{
...
...
@@ -50,14 +50,14 @@ QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject(
fillChannelWithMessages
(
ptr
);
return
ptr
;
}
else
{
}
else
{
return
nullptr
;
}
}
QSharedPointer
<
RocketChatChannel
>
RocketChatChannelService
::
createChannelObject
(
const
QString
&
pRoomId
,
const
QString
&
pName
,
const
QString
&
pType
,
const
QString
&
pUsername
,
bool
insertIntoRepo
)
{
if
(
mServer
)
{
if
(
mServer
)
{
auto
ptr
=
QSharedPointer
<
RocketChatChannel
>::
create
(
mServer
,
mMessageService
,
pRoomId
,
pName
,
pType
);
if
(
pType
==
"d"
)
{
...
...
@@ -73,16 +73,16 @@ QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject(
}
//TODO: this should not be done here!
if
(
insertIntoRepo
&&
Q_LIKELY
(
mChannels
)
)
{
if
(
insertIntoRepo
&&
Q_LIKELY
(
mChannels
)
)
{
mChannels
->
add
(
ptr
);
}
else
{
}
else
if
(
!
mChannels
)
{
qCritical
()
<<
"Channelsrepo not available to ChannelService"
;
}
fillChannelWithMessages
(
ptr
);
return
ptr
;
}
else
{
}
else
{
return
nullptr
;
}
}
...
...
@@ -92,7 +92,7 @@ QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processCha
{
QVector
<
QSharedPointer
<
RocketChatChannel
>
>
vec
;
if
(
mServer
)
{
if
(
mServer
)
{
std
::
tuple
<
QString
,
QString
>
openChannelTupel
=
mStorage
->
getCurrentChannel
();
QString
openChannel
=
std
::
get
<
0
>
(
openChannelTupel
);
mStorage
->
transaction
();
...
...
@@ -216,7 +216,7 @@ QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processCha
}
mStorage
->
askForcommit
();
}
}
return
vec
;
}
...
...
@@ -295,7 +295,7 @@ void RocketChatChannelService::loadJoinedChannelsFromDb()
channelPointer
->
setReadOnly
(
roomHash
[
"readOnly"
].
toBool
()
);
channelPointer
->
setJoined
(
roomHash
[
"joined"
].
toBool
()
);
channelPointer
->
setChatPartnerId
(
roomHash
[
"chatPartnerId"
].
toString
()
);
channelPointer
->
setUpdatedAt
(
roomHash
[
"updatedAt"
].
toLongLong
());
channelPointer
->
setUpdatedAt
(
roomHash
[
"updatedAt"
].
toLongLong
()
);
if
(
channelPointer
->
getType
()
==
"d"
)
{
auto
user
=
users
->
getUserById
(
channelPointer
->
getChatPartnerId
()
);
...
...
@@ -316,18 +316,20 @@ void RocketChatChannelService::loadJoinedChannelsFromDb()
}
channels
.
append
(
channelPointer
);
if
(
channelPointer
->
getType
()
==
"p"
){
channelsP
.
append
(
channelPointer
);
}
else
if
(
channelPointer
->
getType
()
==
"c"
){
channelsC
.
append
(
channelPointer
);
}
else
if
(
channelPointer
->
getType
()
==
"d"
){
channelsD
.
append
(
channelPointer
);
if
(
channelPointer
->
getType
()
==
"p"
)
{
channelsP
.
append
(
channelPointer
);
}
else
if
(
channelPointer
->
getType
()
==
"c"
)
{
channelsC
.
append
(
channelPointer
);
}
else
if
(
channelPointer
->
getType
()
==
"d"
)
{
channelsD
.
append
(
channelPointer
);
}
}
}
mChannels
->
add
(
"p"
,
channelsP
);
mChannels
->
add
(
"c"
,
channelsC
);
mChannels
->
add
(
"d"
,
channelsD
);
mChannels
->
add
(
"p"
,
channelsP
);
mChannels
->
add
(
"c"
,
channelsC
);
mChannels
->
add
(
"d"
,
channelsD
);
emit
channelsLoaded
(
channels
,
true
);
}
}
...
...
@@ -505,7 +507,9 @@ ChannelRepository *RocketChatChannelService::getChannels() const
void
RocketChatChannelService
::
setChannels
(
ChannelRepository
*
pChannels
)
{
if
(
pChannels
)
{
mChannels
=
pChannels
;
}
}
void
RocketChatChannelService
::
leaveChannel
(
const
QString
&
pId
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment