mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
This commit is contained in:
parent
c5d1e5e9c6
commit
f649ea05fd
4 changed files with 51 additions and 19 deletions
|
|
@ -113,19 +113,24 @@ export const
|
||||||
* @param {number=} threadUid = 0
|
* @param {number=} threadUid = 0
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
mailBox = (folder, page, search, threadUid) => {
|
mailBox = (folder, page, search, threadUid, messageUid) => {
|
||||||
let result = [HASH_PREFIX + 'mailbox'];
|
let result = [HASH_PREFIX + 'mailbox'];
|
||||||
|
|
||||||
if (folder) {
|
if (folder) {
|
||||||
result.push(folder + (threadUid ? '~' + threadUid : ''));
|
result.push(folder + (threadUid ? '~' + threadUid : ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (messageUid) {
|
||||||
|
result.push('m' + messageUid);
|
||||||
|
} else {
|
||||||
page = pInt(page, 1);
|
page = pInt(page, 1);
|
||||||
if (1 < page) {
|
if (1 < page) {
|
||||||
result.push('p' + page);
|
result.push('p' + page);
|
||||||
}
|
}
|
||||||
|
|
||||||
search && result.push(encodeURI(search));
|
search && result.push(encodeURI(search));
|
||||||
|
}
|
||||||
|
|
||||||
return result.join('/');
|
return result.join('/');
|
||||||
};
|
},
|
||||||
|
|
||||||
|
mailBoxMessage = (folder, messageUid) => mailBox(folder, 1, '', 0, pInt(messageUid));
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import { AppUserStore } from 'Stores/User/App';
|
||||||
import { AccountUserStore } from 'Stores/User/Account';
|
import { AccountUserStore } from 'Stores/User/Account';
|
||||||
import { FolderUserStore } from 'Stores/User/Folder';
|
import { FolderUserStore } from 'Stores/User/Folder';
|
||||||
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
||||||
|
import { MessageUserStore } from 'Stores/User/Message';
|
||||||
import { ThemeStore } from 'Stores/Theme';
|
import { ThemeStore } from 'Stores/Theme';
|
||||||
|
|
||||||
import { SystemDropDownUserView } from 'View/User/SystemDropDown';
|
import { SystemDropDownUserView } from 'View/User/SystemDropDown';
|
||||||
|
|
@ -20,6 +21,9 @@ import { MailMessageView } from 'View/User/MailBox/MessageView';
|
||||||
|
|
||||||
import { AbstractScreen } from 'Knoin/AbstractScreen';
|
import { AbstractScreen } from 'Knoin/AbstractScreen';
|
||||||
|
|
||||||
|
import { MessageModel } from 'Model/Message';
|
||||||
|
import { populateMessageBody } from 'Common/UtilsUser';
|
||||||
|
|
||||||
export class MailBoxUserScreen extends AbstractScreen {
|
export class MailBoxUserScreen extends AbstractScreen {
|
||||||
constructor() {
|
constructor() {
|
||||||
var styleSheet = createElement('style');
|
var styleSheet = createElement('style');
|
||||||
|
|
@ -69,17 +73,22 @@ export class MailBoxUserScreen extends AbstractScreen {
|
||||||
* @param {string} search
|
* @param {string} search
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
onRoute(folderHash, page, search) {
|
onRoute(folderHash, page, search, messageUid) {
|
||||||
const folder = getFolderFromCacheList(getFolderFullName(folderHash.replace(/~([\d]+)$/, '')));
|
const folder = getFolderFromCacheList(getFolderFullName(folderHash.replace(/~([\d]+)$/, '')));
|
||||||
if (folder) {
|
if (folder) {
|
||||||
let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1');
|
|
||||||
|
|
||||||
FolderUserStore.currentFolder(folder);
|
FolderUserStore.currentFolder(folder);
|
||||||
|
|
||||||
MessagelistUserStore.page(1 > page ? 1 : page);
|
MessagelistUserStore.page(1 > page ? 1 : page);
|
||||||
MessagelistUserStore.listSearch(search);
|
MessagelistUserStore.listSearch(search);
|
||||||
|
if (messageUid) {
|
||||||
|
let message = new MessageModel;
|
||||||
|
message.folder = folderHash;
|
||||||
|
message.uid = messageUid;
|
||||||
|
MessageUserStore.message(message);
|
||||||
|
populateMessageBody(MessageUserStore.message());
|
||||||
|
} else {
|
||||||
|
let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1');
|
||||||
MessagelistUserStore.threadUid((folderHash === threadUid) ? 0 : pInt(threadUid));
|
MessagelistUserStore.threadUid((folderHash === threadUid) ? 0 : pInt(threadUid));
|
||||||
|
}
|
||||||
MessagelistUserStore.reload();
|
MessagelistUserStore.reload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -145,6 +154,10 @@ export class MailBoxUserScreen extends AbstractScreen {
|
||||||
[/^([a-zA-Z0-9.~_-]+)\/(.+)\/?$/, { normalize_: (request, vals) =>
|
[/^([a-zA-Z0-9.~_-]+)\/(.+)\/?$/, { normalize_: (request, vals) =>
|
||||||
[folder(request, vals), 1, decodeURI(pString(vals[1]))]
|
[folder(request, vals), 1, decodeURI(pString(vals[1]))]
|
||||||
}],
|
}],
|
||||||
|
// Message: {folder}/m{uid}(/{search})?
|
||||||
|
[/^([a-zA-Z0-9.~_-]+)\/m([1-9][0-9]*)(?:\/(.+))?$/, { normalize_: (request, vals) =>
|
||||||
|
[folder(request, vals), 1, pString(vals[2]), pString(vals[1])]
|
||||||
|
}],
|
||||||
// Page: {folder}/p{int}(/{search})?
|
// Page: {folder}/p{int}(/{search})?
|
||||||
[/^([a-zA-Z0-9.~_-]+)\/p([1-9][0-9]*)(?:\/(.+))?$/, { normalize_: fNormS }]
|
[/^([a-zA-Z0-9.~_-]+)\/p([1-9][0-9]*)(?:\/(.+))?$/, { normalize_: fNormS }]
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -200,10 +200,10 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
hasher.setHash(mailBox(sFolder));
|
hasher.setHash(mailBox(sFolder));
|
||||||
}
|
}
|
||||||
if (sFolder && iUid) {
|
if (sFolder && iUid) {
|
||||||
MessageUserStore.message(MessageModel.fromMessageListItem(null));
|
let message = new MessageModel;
|
||||||
MessageUserStore.message().folder = sFolder;
|
message.folder = sFolder;
|
||||||
MessageUserStore.message().uid = iUid;
|
message.uid = iUid;
|
||||||
|
MessageUserStore.message(message);
|
||||||
populateMessageBody(MessageUserStore.message());
|
populateMessageBody(MessageUserStore.message());
|
||||||
} else {
|
} else {
|
||||||
MessageUserStore.message(null);
|
MessageUserStore.message(null);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,18 @@ use OCP\Search\SearchResultEntry;
|
||||||
*/
|
*/
|
||||||
class Provider implements IProvider
|
class Provider implements IProvider
|
||||||
{
|
{
|
||||||
|
/** @var IL10N */
|
||||||
|
private $l10n;
|
||||||
|
|
||||||
|
/** @var IURLGenerator */
|
||||||
|
private $urlGenerator;
|
||||||
|
|
||||||
|
public function __construct(IL10N $l10n, IURLGenerator $urlGenerator)
|
||||||
|
{
|
||||||
|
$this->l10n = $l10n;
|
||||||
|
$this->urlGenerator = $urlGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
public function getId(): string
|
public function getId(): string
|
||||||
{
|
{
|
||||||
return Application::APP_ID;
|
return Application::APP_ID;
|
||||||
|
|
@ -85,8 +97,10 @@ class Provider implements IProvider
|
||||||
$Message->Subject(),
|
$Message->Subject(),
|
||||||
// subline
|
// subline
|
||||||
$Message->From()->ToString(),
|
$Message->From()->ToString(),
|
||||||
// resourceUrl
|
// resourceUrl /index.php/apps/snappymail/#/mailbox/INBOX/p2/text=an&unseen
|
||||||
'', // TODO $this->urlGenerator->linkToRouteAbsolute(),
|
$this->urlGenerator->linkToRoute('snappymail.page.index')
|
||||||
|
. '#/mailbox/INBOX/m' . $Message->Uid()
|
||||||
|
. '/' . \rawurlencode($oParams->sSearch),
|
||||||
// icon
|
// icon
|
||||||
'icon-mail',
|
'icon-mail',
|
||||||
// rounded
|
// rounded
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue