mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-22 16:26:08 +08:00
149b389508
* Switch to using Typescript instead of Babel * Switch all es6 / jsx file extensions to ts / tsx * Convert Utils to a TS module from module.exports style module * Move everything from module.exports to typescript exports * Define .d.ts files for mailspring-exports and component kit… Yes it seems this is the best option :( * Load up on those @types * Synthesize TS types from PropTypes for standard components * Add types to Model classes and move constructor constants to instance vars * 9800 => 7700 TS errors * 7700 => 5600 TS errors * 5600 => 5330 TS errors * 5330 => 4866 TS errors * 4866 => 4426 TS errors * 4426 => 2411 TS errors * 2411 > 1598 TS errors * 1598 > 769 TS errors * 769 > 129 TS errors * 129 > 22 TS errors * Fix runtime errors * More runtime error fixes * Remove support for custom .es6 file extension * Remove a few odd remaining references to Nylas * Don’t ship Typescript support in the compiled app for now * Fix issues in compiled app - module resolution in TS is case sensitive? * README updates * Fix a few more TS errors * Make “No Signature” option clickable + selectable * Remove flicker when saving file and reloading keymaps * Fix mail rule item height in preferences * Fix missing spacing in thread sharing popover * Fix scrollbar ticks being nested incorrectly * Add Japanese as a manually reviewed language * Prevent the thread list from “sticking” * Re-use Sheet when switching root tabs, prevent sidebar from resetting * Ensure specs run * Update package configuration to avoid shpping types * Turn eslint back on - we will opt-in to the TS rules one by one
79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import {
|
|
ComponentRegistry,
|
|
DatabaseStore,
|
|
DraftStore,
|
|
Message,
|
|
SyncbackMetadataTask,
|
|
SendActionsStore,
|
|
Actions,
|
|
localized,
|
|
} from 'mailspring-exports';
|
|
import { HasTutorialTip } from 'mailspring-component-kit';
|
|
|
|
import SendLaterButton from './send-later-button';
|
|
import SendLaterStatus from './send-later-status';
|
|
import { PLUGIN_ID } from './send-later-constants';
|
|
|
|
let unlisten = null;
|
|
|
|
const SendLaterButtonWithTip = HasTutorialTip(SendLaterButton, {
|
|
title: localized('Send on your own schedule'),
|
|
instructions: localized(
|
|
'Schedule this message to send at the ideal time. Mailspring makes it easy to control the fabric of spacetime!'
|
|
),
|
|
});
|
|
|
|
function handleMetadataExpiration(change) {
|
|
if (change.type !== 'metadata-expiration' || change.objectClass !== Message.name) {
|
|
return;
|
|
}
|
|
|
|
change.objects.forEach(async message => {
|
|
const metadata = message.metadataForPluginId(PLUGIN_ID);
|
|
if (!metadata || !metadata.expiration || metadata.expiration > new Date()) {
|
|
return;
|
|
}
|
|
|
|
if (!message.draft) {
|
|
Actions.queueTask(
|
|
SyncbackMetadataTask.forSaving({
|
|
model: message,
|
|
pluginId: PLUGIN_ID,
|
|
value: {
|
|
expiration: null,
|
|
},
|
|
})
|
|
);
|
|
return;
|
|
}
|
|
|
|
// clear the metadata
|
|
const session = await DraftStore.sessionForClientId(message.headerMessageId);
|
|
session.changes.addPluginMetadata(PLUGIN_ID, { expiration: null });
|
|
session.changes.commit();
|
|
|
|
// send the draft
|
|
const actionKey = metadata.actionKey || SendActionsStore.DefaultSendActionKey;
|
|
Actions.sendDraft(message.headerMessageId, { actionKey, delay: 0 });
|
|
});
|
|
}
|
|
|
|
export function activate() {
|
|
ComponentRegistry.register(SendLaterButtonWithTip, { role: 'Composer:ActionButton' });
|
|
ComponentRegistry.register(SendLaterStatus, { role: 'DraftList:DraftStatus' });
|
|
|
|
if (AppEnv.isMainWindow()) {
|
|
unlisten = DatabaseStore.listen(handleMetadataExpiration);
|
|
}
|
|
}
|
|
|
|
export function deactivate() {
|
|
ComponentRegistry.unregister(SendLaterButtonWithTip);
|
|
ComponentRegistry.unregister(SendLaterStatus);
|
|
if (unlisten) {
|
|
unlisten();
|
|
}
|
|
}
|
|
|
|
export function serialize() {}
|