mirror of
https://github.com/moparisthebest/mail
synced 2024-11-25 18:32:20 -05:00
WIP: start new routing
This commit is contained in:
parent
e06fff4385
commit
c012f54c89
@ -68,6 +68,11 @@ var app = angular.module('mail', [
|
||||
|
||||
// set router paths
|
||||
app.config(function($routeProvider, $animateProvider) {
|
||||
|
||||
//
|
||||
// Login routes
|
||||
//
|
||||
|
||||
$routeProvider.when('/login', {
|
||||
templateUrl: 'tpl/login.html',
|
||||
controller: LoginCtrl
|
||||
@ -104,10 +109,24 @@ app.config(function($routeProvider, $animateProvider) {
|
||||
templateUrl: 'tpl/login-privatekey-download.html',
|
||||
controller: LoginPrivateKeyDownloadCtrl
|
||||
});
|
||||
$routeProvider.when('/desktop', {
|
||||
|
||||
//
|
||||
// main app routes
|
||||
//
|
||||
|
||||
var accountRoute = {
|
||||
templateUrl: 'tpl/desktop.html',
|
||||
controller: NavigationCtrl
|
||||
});
|
||||
};
|
||||
|
||||
$routeProvider.when('/account', accountRoute);
|
||||
$routeProvider.when('/account/:folderIndex', accountRoute);
|
||||
$routeProvider.when('/account/:folderIndex/:uid', accountRoute);
|
||||
|
||||
//
|
||||
// Default route
|
||||
//
|
||||
|
||||
$routeProvider.otherwise({
|
||||
redirectTo: '/login'
|
||||
});
|
||||
|
@ -11,7 +11,7 @@ var INIT_DISPLAY_LEN = 20,
|
||||
FOLDER_TYPE_INBOX = 'Inbox',
|
||||
NOTIFICATION_INBOX_TIMEOUT = 5000;
|
||||
|
||||
var MailListCtrl = function($scope, $timeout, $routeParams, $filter, statusDisplay, notification, email, keychain, dialog, search, dummy) {
|
||||
var MailListCtrl = function($scope, $timeout, $location, $routeParams, $filter, statusDisplay, notification, email, keychain, dialog, search, dummy) {
|
||||
|
||||
//
|
||||
// Init
|
||||
@ -50,6 +50,10 @@ var MailListCtrl = function($scope, $timeout, $routeParams, $filter, statusDispl
|
||||
});
|
||||
};
|
||||
|
||||
$scope.navigate = function(message) {
|
||||
$location.path('/account/' + $routeParams.folderIndex + '/' + message.uid);
|
||||
};
|
||||
|
||||
/**
|
||||
* Called when clicking on an message list item
|
||||
*/
|
||||
@ -98,6 +102,11 @@ var MailListCtrl = function($scope, $timeout, $routeParams, $filter, statusDispl
|
||||
}
|
||||
};
|
||||
|
||||
var selectedMessage = _.findWhere(currentFolder().messages, {
|
||||
uid: $routeParams.uid
|
||||
});
|
||||
$scope.select(selectedMessage);
|
||||
|
||||
$scope.flag = function(message, flagged) {
|
||||
$scope.state.actionBar.flagMessage(message, flagged);
|
||||
};
|
||||
@ -155,7 +164,7 @@ var MailListCtrl = function($scope, $timeout, $routeParams, $filter, statusDispl
|
||||
// Shows the next message based on the uid of the currently selected element
|
||||
if (currentFolder().messages.indexOf(currentMessage()) === -1) {
|
||||
firstSelect = true; // reset first selection
|
||||
$scope.select($scope.displayMessages[0]);
|
||||
$scope.navigate($scope.displayMessages[0]);
|
||||
}
|
||||
});
|
||||
|
||||
@ -301,7 +310,7 @@ var MailListCtrl = function($scope, $timeout, $routeParams, $filter, statusDispl
|
||||
}
|
||||
|
||||
// mark message as read
|
||||
$scope.select(_.findWhere(currentFolder().messages, {
|
||||
$scope.navigate(_.findWhere(currentFolder().messages, {
|
||||
uid: unreadMsgs[0].uid
|
||||
}));
|
||||
},
|
||||
|
@ -17,9 +17,13 @@ var NavigationCtrl = function($scope, $routeParams, $location, account, email, o
|
||||
if (!$routeParams.dev && !account.isLoggedIn()) {
|
||||
$location.path('/'); // init app
|
||||
return;
|
||||
} else if (!$routeParams.folderIndex) {
|
||||
$location.path('/account/0'); // navigate to default account's inbox by default
|
||||
return;
|
||||
}
|
||||
|
||||
var str = appConfig.string,
|
||||
var folderIndex = $routeParams.folderIndex,
|
||||
str = appConfig.string,
|
||||
config = appConfig.config;
|
||||
|
||||
//
|
||||
@ -77,10 +81,12 @@ var NavigationCtrl = function($scope, $routeParams, $location, account, email, o
|
||||
// init folders
|
||||
initializeFolders();
|
||||
|
||||
// select inbox as the current folder on init
|
||||
if ($scope.account.folders && $scope.account.folders.length > 0) {
|
||||
$scope.openFolder($scope.account.folders[0]);
|
||||
// select current folder on init
|
||||
if ($scope.account.folders && $scope.account.folders.length > folderIndex) {
|
||||
// navigate to the selected folder index
|
||||
$scope.openFolder($scope.account.folders[folderIndex]);
|
||||
}
|
||||
|
||||
// connect imap/smtp clients on first startup
|
||||
account.onConnect(function(err) {
|
||||
if (err) {
|
||||
|
@ -43,7 +43,7 @@ var LoginExistingCtrl = function($scope, $location, $routeParams, email, auth, k
|
||||
return;
|
||||
}
|
||||
|
||||
$location.path('/desktop');
|
||||
$location.path('/account');
|
||||
$scope.$apply();
|
||||
});
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ var LoginInitialCtrl = function($scope, $location, $routeParams, newsletter, ema
|
||||
return;
|
||||
}
|
||||
|
||||
$location.path('/desktop');
|
||||
$location.path('/account');
|
||||
$scope.$apply();
|
||||
});
|
||||
});
|
||||
|
@ -95,7 +95,7 @@ var LoginExistingCtrl = function($scope, $location, $routeParams, email, auth, p
|
||||
return;
|
||||
}
|
||||
|
||||
$location.path('/desktop');
|
||||
$location.path('/account');
|
||||
$scope.$apply();
|
||||
});
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ var LoginPrivateKeyDownloadCtrl = function($scope, $location, $routeParams, auth
|
||||
return;
|
||||
}
|
||||
|
||||
$scope.goTo('/desktop');
|
||||
$scope.goTo('/account');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -60,7 +60,7 @@ var LoginCtrl = function($scope, $timeout, $location, updateHandler, account, au
|
||||
return dialog.error(err);
|
||||
}
|
||||
|
||||
$scope.goTo('/desktop');
|
||||
$scope.goTo('/account');
|
||||
});
|
||||
});
|
||||
} else if (availableKeys && availableKeys.publicKey && !availableKeys.privateKey) {
|
||||
|
@ -27,7 +27,7 @@
|
||||
infinite-scroll-distance="1" infinite-scroll-parent="true">
|
||||
<li class="mail-list-entry"
|
||||
ng-class="{'mail-list-entry--active': email === state.mailList.selected, 'mail-list-entry--unread': email.unread, 'mail-list-entry--attachment': email.attachments !== undefined && email.attachments.length > 0}"
|
||||
wo-touch="select(email)"
|
||||
wo-touch="navigate(email)"
|
||||
ng-repeat="email in displayMessages">
|
||||
<ul class="mail-list-entry__flags">
|
||||
<li class="mail-list-entry__flags-unread"></li>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<ul class="nav__folders">
|
||||
<li ng-repeat="folder in account.folders" ng-if="folder.wellknown" ng-hide="folder.type === 'Outbox' && folder.count < 1"
|
||||
class="nav__folder" ng-class="{'nav__folder--open': state.nav.currentFolder === folder}">
|
||||
<a href="#" wo-touch="$event.preventDefault(); openFolder(folder)">
|
||||
<a href="#/account/{{$index}}">
|
||||
<svg ng-if="folder.type === 'Inbox'" role="presentation">
|
||||
<use xlink:href="#icon-inbox" />
|
||||
</svg>
|
||||
@ -38,7 +38,7 @@
|
||||
<ul class="nav__folders">
|
||||
<li ng-repeat="folder in account.folders" ng-if="!folder.wellknown"
|
||||
class="nav__folder" ng-class="{'nav__folder--open': state.nav.currentFolder === folder}">
|
||||
<a href="#" wo-touch="$event.preventDefault(); openFolder(folder)">
|
||||
<a href="#/account/{{$index}}">
|
||||
<svg role="presentation"><use xlink:href="#icon-folder" /></svg>
|
||||
{{folder.name}}
|
||||
<span ng-show="folder.count > 0" class="nav__counter">{{folder.count}}</span>
|
||||
|
Loading…
Reference in New Issue
Block a user