本文整理汇总了TypeScript中common/actions.actions.openModal方法的典型用法代码示例。如果您正苦于以下问题:TypeScript actions.openModal方法的具体用法?TypeScript actions.openModal怎么用?TypeScript actions.openModal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类common/actions.actions
的用法示例。
在下文中一共展示了actions.openModal方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: async
watcher.on(actions.requestCaveUninstall, async (store, action) => {
const { caveId } = action.payload;
const { cave } = await mcall(messages.FetchCave, { caveId });
const { game } = cave;
// FIXME: i18n - plus, that's generally bad
const title = game ? game.title : "this";
store.dispatch(
actions.openModal(
modals.naked.make({
wind: "root",
title: "",
message: ["prompt.uninstall.message", { title }],
buttons: [
{
label: ["prompt.uninstall.reinstall"],
id: "modal-reinstall",
action: actions.queueCaveReinstall({ caveId }),
icon: "repeat",
},
{
label: ["prompt.uninstall.uninstall"],
id: "modal-uninstall",
action: actions.queueCaveUninstall({ caveId }),
icon: "uninstall",
},
"cancel",
],
widgetParams: null,
})
)
);
});
示例2: async
client.on(messages.PrereqsStarted, async ({ tasks }) => {
prereqsStateParams = {
gameTitle: game.title,
tasks: {},
};
for (const name of Object.keys(tasks)) {
const task = tasks[name];
prereqsStateParams.tasks[name] = {
fullName: task.fullName,
order: task.order,
status: PrereqStatus.Pending,
progress: 0,
eta: 0,
bps: 0,
};
}
prereqsModal = modalWidgets.prereqsState.make({
window: "root",
title: ["grid.item.installing"],
message: "",
widgetParams: prereqsStateParams,
buttons: [
{
id: "modal-cancel",
label: ["prompt.action.cancel"],
action: actions.abortTask({ id: ctx.getTaskId() }),
className: "secondary",
},
],
unclosable: true,
});
store.dispatch(actions.openModal(prereqsModal));
});
示例3: async
watcher.on(actions.relaunchRequest, async (store, action) => {
const rs = store.getState();
const pkg = rs.broth.packages[rs.system.appName];
if (pkg.stage !== "need-restart") {
return;
}
const version = pkg.availableVersion;
const restart = t(rs.i18n, ["prompt.self_update_ready.action.restart"]);
store.dispatch(
actions.openModal(
modals.naked.make({
wind: "root",
title: ["prompt.self_update.title", { version }],
message: ["prompt.self_update_ready.message", { restart }],
buttons: [
{
label: ["prompt.self_update_ready.action.restart"],
action: actions.relaunch({}),
},
{
label: ["prompt.self_update_ready.action.snooze"],
action: actions.closeModal({ wind: "root" }),
},
],
widgetParams: null,
})
)
);
});
示例4: async
watcher.on(actions.showDownloadError, async (store, action) => {
const { id } = action.payload;
const { downloads } = store.getState();
const item = downloads.items[id];
if (!item) {
logger.warn(
`can't show download error for item we don't know about! (${id})`
);
return;
}
const operateLogPath = join(item.stagingFolder, "operate-log.json");
let log = "<missing log>";
try {
log = await sf.readFile(operateLogPath, { encoding: "utf8" });
} catch (e) {
logger.warn(`could not read log: ${e.stack}`);
}
store.dispatch(
actions.openModal(
makeInstallErrorModal({
store,
e: getDownloadError(item),
log,
game: item.game,
retryAction: () => actions.retryDownload({ id }),
stopAction: () => actions.discardDownload({ id }),
})
)
);
});
示例5: async
watcher.on(actions.manageGame, async (store, action) => {
const { game } = action.payload;
const { caves } = await call(messages.FetchCavesByGameID, {
gameId: game.id,
});
const widgetParams = {
game,
caves,
allUploads: [],
loadingUploads: true,
};
const openModal = actions.openModal(
modalWidgets.manageGame.make({
window: "root",
title: game.title,
message: "",
buttons: [
{
label: ["prompt.action.close"],
className: "secondary",
},
],
widgetParams,
})
);
store.dispatch(openModal);
const modalId = openModal.payload.id;
try {
try {
const { uploads } = await call(messages.GameFindUploads, { game });
widgetParams.allUploads = uploads;
} catch (e) {
console.log(`Could not fetch compatible uploads: ${e.stack}`);
}
} catch (e) {
logger.warn(`could not list uploads: ${e.message}`);
} finally {
widgetParams.loadingUploads = false;
store.dispatch(
actions.updateModalWidgetParams(
modalWidgets.manageGame.update({
id: modalId,
widgetParams,
})
)
);
}
});
示例6: async
watcher.on(actions.queueGame, async (store, action) => {
const { game, caveId } = action.payload;
let caves: Cave[];
if (caveId) {
const { cave } = await mcall(messages.FetchCave, { caveId });
if (cave) {
caves = [cave];
}
} else {
caves = (await mcall(messages.FetchCaves, {
filters: { gameId: game.id },
})).items;
}
if (isEmpty(caves)) {
logger.info(
`No cave for ${game.title} (#${game.id}), attempting install`
);
await queueInstall(store, game);
return;
}
logger.info(
`Have ${caves.length} caves for game ${game.title} (#${game.id})`
);
if (caves.length === 1) {
const cave = caves[0];
store.dispatch(actions.queueLaunch({ cave }));
return;
}
store.dispatch(
actions.openModal(
modals.naked.make({
wind: "root",
title: ["prompt.launch.title", { title: game.title }],
message: ["prompt.launch.message"],
bigButtons: map(caves, cave => {
return {
...makeUploadButton(cave.upload),
action: actions.queueLaunch({ cave }),
};
}),
buttons: ["cancel"],
widgetParams: null,
})
)
);
});
示例7:
export async function promisedModal<Params, Response>(
store: Store,
payload: TypedModal<Params, Response>
): Promise<Response> {
const modalAction = actions.openModal(payload);
const { id } = modalAction.payload;
const p = new ItchPromise<any>(resolve => {
modalResolves[id] = resolve;
});
store.dispatch(modalAction);
return await p;
}
示例8: async
onError: async (e, log) => {
store.dispatch(
actions.openModal(
makeInstallErrorModal({
store,
e,
log,
game,
retryAction: () => actions.queueGameInstall({ game, upload }),
stopAction: () => null,
})
)
);
},
示例9: async
watcher.on(actions.showGameUpdate, async (store, action) => {
const { update } = action.payload;
const { game } = update;
const { title } = game;
let dialogTitle = ["pick_update_upload.single.title", { title }];
let dialogMessage = ["pick_update_upload.single.message", { title }];
let dialogDetail = ["pick_update_upload.single.detail"];
const dialogButtons: ModalButtonSpec[] = [
{
icon: "moon",
label: ["pick_update_upload.buttons.skip_update"],
action: actions.snoozeCave({ caveId: update.caveId }),
className: "secondary",
},
{
icon: "play2",
label: ["pick_update_upload.buttons.just_launch"],
action: actions.queueGame({ game }),
className: "secondary",
},
"cancel",
];
store.dispatch(
actions.openModal(
modals.naked.make({
wind: "root",
title: dialogTitle,
message: dialogMessage,
detail: dialogDetail,
bigButtons: map(update.choices, choice => {
const spec: ModalButtonSpec = {
...makeUploadButton(choice.upload, { showSize: false }),
action: actions.queueGameUpdate({ update, choice }),
};
spec.tags.push({
icon: choice.confidence > 0.5 ? "like" : "neutral",
label: ` ${(choice.confidence * 100).toFixed()}%`,
});
return spec;
}),
buttons: dialogButtons,
widgetParams: null,
})
)
);
});
示例10: async
watcher.on(actions.sendFeedback, async (store, action) => {
const { log } = action.payload;
store.dispatch(
actions.openModal(
modals.sendFeedback.make({
wind: "root",
title: ["send_feedback.title"],
widgetParams: {
log,
},
})
)
);
});