mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Create app level category for MXSession to count missed notifications count
This commit is contained in:
parent
f144413a7b
commit
88e9ebddb2
4 changed files with 87 additions and 20 deletions
|
@ -43,6 +43,7 @@
|
|||
32D392191EB9B7AB009A2BAF /* DirectoryServerDetailTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 32D392171EB9B7AB009A2BAF /* DirectoryServerDetailTableViewCell.xib */; };
|
||||
32FD0A3D1EB0CD9B0072B066 /* BugReportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FD0A3B1EB0CD9B0072B066 /* BugReportViewController.m */; };
|
||||
32FD0A3E1EB0CD9B0072B066 /* BugReportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 32FD0A3C1EB0CD9B0072B066 /* BugReportViewController.xib */; };
|
||||
926FA53F1F4C132000F826C2 /* MXSession+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = 926FA53E1F4C132000F826C2 /* MXSession+Riot.m */; };
|
||||
E2EAC1A4FBD6FE5228584591 /* libPods-Riot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8737F782E108CFD6908691 /* libPods-Riot.a */; };
|
||||
F0131DE51F2200D600CBF707 /* RiotSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F0131DE41F2200D600CBF707 /* RiotSplitViewController.m */; };
|
||||
F02C1A861E8EB04C0045A404 /* PeopleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F02C1A841E8EB04C0045A404 /* PeopleViewController.m */; };
|
||||
|
@ -545,6 +546,8 @@
|
|||
32FD0A3B1EB0CD9B0072B066 /* BugReportViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugReportViewController.m; sourceTree = "<group>"; };
|
||||
32FD0A3C1EB0CD9B0072B066 /* BugReportViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BugReportViewController.xib; sourceTree = "<group>"; };
|
||||
7D8737F782E108CFD6908691 /* libPods-Riot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Riot.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
926FA53D1F4C132000F826C2 /* MXSession+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXSession+Riot.h"; sourceTree = "<group>"; };
|
||||
926FA53E1F4C132000F826C2 /* MXSession+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MXSession+Riot.m"; sourceTree = "<group>"; };
|
||||
F0131DE31F2200D600CBF707 /* RiotSplitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiotSplitViewController.h; sourceTree = "<group>"; };
|
||||
F0131DE41F2200D600CBF707 /* RiotSplitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiotSplitViewController.m; sourceTree = "<group>"; };
|
||||
F02C1A831E8EB04C0045A404 /* PeopleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PeopleViewController.h; sourceTree = "<group>"; };
|
||||
|
@ -1521,6 +1524,8 @@
|
|||
F083BBEA1E7009EC00A9B29C /* UINavigationController+Riot.m */,
|
||||
F083BBEB1E7009EC00A9B29C /* UIViewController+RiotSearch.h */,
|
||||
F083BBEC1E7009EC00A9B29C /* UIViewController+RiotSearch.m */,
|
||||
926FA53D1F4C132000F826C2 /* MXSession+Riot.h */,
|
||||
926FA53E1F4C132000F826C2 /* MXSession+Riot.m */,
|
||||
);
|
||||
path = Categories;
|
||||
sourceTree = "<group>";
|
||||
|
@ -2668,6 +2673,7 @@
|
|||
F083BDF81E7009ED00A9B29C /* RoomDataSource.m in Sources */,
|
||||
F083BE371E7009ED00A9B29C /* RoomActivitiesView.m in Sources */,
|
||||
F083BE131E7009ED00A9B29C /* HomeMessagesSearchViewController.m in Sources */,
|
||||
926FA53F1F4C132000F826C2 /* MXSession+Riot.m in Sources */,
|
||||
F083BE8C1E7009ED00A9B29C /* PreviewRoomTitleView.m in Sources */,
|
||||
F083BE271E7009ED00A9B29C /* SettingsViewController.m in Sources */,
|
||||
F083BE9A1E7009ED00A9B29C /* TableViewCellWithButton.m in Sources */,
|
||||
|
|
28
Riot/Categories/MXSession+Riot.h
Normal file
28
Riot/Categories/MXSession+Riot.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
Copyright 2017 Vector Creations Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import <MatrixSDK/MXSession.h>
|
||||
|
||||
@interface MXSession (Riot)
|
||||
|
||||
/**
|
||||
The current number of rooms with missed notifications, including the invites.
|
||||
*/
|
||||
- (NSUInteger)riot_missedDiscussionsCount;
|
||||
|
||||
@end
|
51
Riot/Categories/MXSession+Riot.m
Normal file
51
Riot/Categories/MXSession+Riot.m
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
Copyright 2017 Vector Creations Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#import "MXSession+Riot.h"
|
||||
|
||||
#import "MXRoom+Riot.h"
|
||||
|
||||
@implementation MXSession (Riot)
|
||||
|
||||
- (NSUInteger)riot_missedDiscussionsCount
|
||||
{
|
||||
NSUInteger missedDiscussionsCount = 0;
|
||||
|
||||
// Sum all the rooms with missed notifications.
|
||||
for (MXRoomSummary *roomSummary in self.roomsSummaries)
|
||||
{
|
||||
NSUInteger notificationCount = roomSummary.notificationCount;
|
||||
|
||||
// Ignore the regular notification count if the room is in 'mentions only" mode at the Riot level.
|
||||
if (roomSummary.room.isMentionsOnly)
|
||||
{
|
||||
// Only the highlighted missed messages must be considered here.
|
||||
notificationCount = roomSummary.highlightCount;
|
||||
}
|
||||
|
||||
if (notificationCount)
|
||||
{
|
||||
missedDiscussionsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the invites count
|
||||
missedDiscussionsCount += [self invitedRooms].count;
|
||||
|
||||
return missedDiscussionsCount;
|
||||
}
|
||||
|
||||
@end
|
|
@ -23,6 +23,7 @@
|
|||
#import "AppDelegate.h"
|
||||
|
||||
#import "MXRoom+Riot.h"
|
||||
#import "MXSession+Riot.h"
|
||||
|
||||
@interface MasterTabBarController ()
|
||||
{
|
||||
|
@ -424,26 +425,7 @@
|
|||
// Considering all the current sessions.
|
||||
for (MXSession *session in mxSessionArray)
|
||||
{
|
||||
// Sum all the rooms with missed notifications.
|
||||
for (MXRoomSummary *roomSummary in session.roomsSummaries)
|
||||
{
|
||||
NSUInteger notificationCount = roomSummary.notificationCount;
|
||||
|
||||
// Ignore the regular notification count if the room is in 'mentions only" mode at the Riot level.
|
||||
if (roomSummary.room.isMentionsOnly)
|
||||
{
|
||||
// Only the highlighted missed messages must be considered here.
|
||||
notificationCount = roomSummary.highlightCount;
|
||||
}
|
||||
|
||||
if (notificationCount)
|
||||
{
|
||||
roomCount ++;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the invites count
|
||||
roomCount += [session invitedRooms].count;
|
||||
roomCount += [session riot_missedDiscussionsCount];
|
||||
}
|
||||
|
||||
return roomCount;
|
||||
|
|
Loading…
Reference in a new issue