diff --git a/app/notificationmodel.cpp b/app/notificationmodel.cpp index e250a76dd..7271bd9e3 100644 --- a/app/notificationmodel.cpp +++ b/app/notificationmodel.cpp @@ -144,6 +144,12 @@ void NotificationModel::onNotificationClicked( uint id ) emit showProjectIssuesActionClicked(); break; } + case NotificationType::ActionType::ShowSwitchWorkspaceAction: + { + remove( id ); + emit showSwitchWorkspaceActionClicked(); + break; + } default: break; } } diff --git a/app/notificationmodel.h b/app/notificationmodel.h index 541e82197..7f8053593 100644 --- a/app/notificationmodel.h +++ b/app/notificationmodel.h @@ -40,7 +40,8 @@ class NotificationType enum ActionType { NoAction, - ShowProjectIssuesAction + ShowProjectIssuesAction, + ShowSwitchWorkspaceAction }; Q_ENUM( ActionType ) @@ -107,6 +108,7 @@ class NotificationModel : public QAbstractListModel signals: void rowCountChanged(); void showProjectIssuesActionClicked(); + void showSwitchWorkspaceActionClicked(); private: void add( const QString &message, uint interval, NotificationType::MessageType type = NotificationType::Information, NotificationType::IconType icon = NotificationType::NoneIcon, NotificationType::ActionType action = NotificationType::ActionType::NoAction ); diff --git a/app/qml/account/MMAcceptInvitationController.qml b/app/qml/account/MMAcceptInvitationController.qml index e45094f3e..ccec7bc56 100644 --- a/app/qml/account/MMAcceptInvitationController.qml +++ b/app/qml/account/MMAcceptInvitationController.qml @@ -16,32 +16,25 @@ import mm 1.0 as MM * e.g. on app start */ Item { - id: controller - - required property bool enabled - required property var stackView + id: root + property bool enabled: true property MM.MerginInvitation invitation Connections { - id: openInvitationsListener - target: __merginApi - enabled: controller.enabled && !stackView.containsPage("signUpPanel") + enabled: root.enabled function onUserInfoReplyFinished() { - // let's not show invitations when registration finish page is opened - // this should be redundant - never reached - if ( stackView.containsPage("signUpPanel") ) { - return; - } - if ( !__merginApi.userAuth.hasAuthData() ) { return; } if ( __merginApi.userInfo.hasInvitations ) { - __notificationModel.addWarning( qsTr( "You have pending workspace invitations! You may accept or reject them in your workspace selection page" ) ) + __notificationModel.addWarning( + __inputUtils.htmlLink(qsTr( "You have pending workspace invitations.
Please %1accept or reject%2 them." ), __style.grapeColor), + MM.NotificationType.ShowSwitchWorkspaceAction + ) } } } diff --git a/app/qml/main.qml b/app/qml/main.qml index 7e86499f2..534743b00 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -912,6 +912,10 @@ ApplicationWindow { projectIssuesPage.projectLoadingLog = __activeProject.projectLoadingLog(); projectIssuesPage.visible = true; } + function onShowSwitchWorkspaceActionClicked() { + stateManager.state = "projects" + projectController.showSelectWorkspacePage() + } } Connections { diff --git a/app/qml/project/MMProjectController.qml b/app/qml/project/MMProjectController.qml index 3160ef925..532bc1118 100644 --- a/app/qml/project/MMProjectController.qml +++ b/app/qml/project/MMProjectController.qml @@ -77,6 +77,10 @@ Item { root.openChangesPanel( projectId ) } + function showSelectWorkspacePage() { + stackView.push( workspaceListComponent ) + } + visible: false focus: true @@ -468,9 +472,12 @@ Item { MMAcceptInvitationController { id: acceptInvitationController - // TODO enabled add controller.showInvitationsList - enabled: root.visible && __merginApi.apiSupportsWorkspaces - stackView: stackView + // Do not show accept invitation notification when + // - there is onboarding ongoing + // - account page is already opened + enabled: !accountController.inProgress && + !stackView.containsPage("accountPage") && + __merginApi.apiSupportsWorkspaces } Component { @@ -489,6 +496,8 @@ Item { MMAccountPage { id: workspaceAccountPage + objectName: "accountPage" + abbrName: __merginApi.userInfo.nameAbbr fullName: __merginApi.userInfo.name userName: __merginApi.userAuth.username @@ -522,9 +531,7 @@ Item { root.resetView() } - onSelectWorkspaceClicked: { - stackView.push( workspaceListComponent ) - } + onSelectWorkspaceClicked: root.showSelectWorkspacePage() } }