mirror of
https://github.com/tutao/tutanota.git
synced 2025-12-08 06:09:50 +00:00
* Rename MailSet to MailFolder * Change cardinality of multiple type to One Co-authored-by: kib <kib@tutao.de>
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import m from "mithril"
|
|
import { MailSetKind } from "../../../common/api/common/TutanotaConstants.js"
|
|
import { assertNotNull } from "@tutao/tutanota-utils"
|
|
import { assertSystemFolderOfType } from "../../mail/model/MailUtils.js"
|
|
import { getElementId } from "../../../common/api/common/utils/EntityUtils.js"
|
|
import { LoginController } from "../../../common/api/main/LoginController.js"
|
|
import { MailModel } from "../../mail/model/MailModel.js"
|
|
import { MailboxModel } from "../../../common/mailFunctionality/MailboxModel.js"
|
|
|
|
/**
|
|
* Handles requests for opening mailbox paths from native.
|
|
*/
|
|
export class OpenMailboxHandler {
|
|
constructor(
|
|
private readonly logins: LoginController,
|
|
private readonly mailModel: MailModel,
|
|
private readonly mailboxModel: MailboxModel,
|
|
) {}
|
|
|
|
async openMailbox(userId: Id, mailAddress: string, requestedPath: string | null): Promise<void> {
|
|
if (this.logins.isUserLoggedIn() && this.logins.getUserController().user._id === userId) {
|
|
if (!requestedPath) {
|
|
const [mailboxDetail] = await this.mailboxModel.getMailboxDetails()
|
|
const folders = await this.mailModel.getMailboxFoldersForId(mailboxDetail.mailbox.folders._id)
|
|
const inbox = assertSystemFolderOfType(folders, MailSetKind.INBOX)
|
|
m.route.set("/mail/" + getElementId(inbox))
|
|
} else {
|
|
m.route.set("/mail" + requestedPath)
|
|
}
|
|
} else {
|
|
if (!requestedPath) {
|
|
m.route.set(`/login?noAutoLogin=false&userId=${userId}&loginWith=${mailAddress}`)
|
|
} else {
|
|
const fullRequestedPath = `/mail${requestedPath}`
|
|
m.route.set(`/login?noAutoLogin=false&userId=${userId}&loginWith=${mailAddress}&requestedPath=${encodeURIComponent(fullRequestedPath)}`)
|
|
}
|
|
}
|
|
}
|
|
}
|