mirror of
https://github.com/HeyPuter/puter
synced 2024-11-14 22:06:00 +00:00
Phoenix: Use regular code path to run built-in apps
Now launchApp() can always be awaited, we can run built-in apps using the same code path for other apps, and eventually have SIGINT close them.
This commit is contained in:
parent
e355c77a4a
commit
222a617c44
@ -23,43 +23,37 @@ const BUILT_IN_APPS = [
|
|||||||
'explorer',
|
'explorer',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const lookup_app = async (id) => {
|
||||||
|
if (BUILT_IN_APPS.includes(id)) {
|
||||||
|
return { success: true, path: null };
|
||||||
|
}
|
||||||
|
|
||||||
|
const request = await fetch(`${puter.APIOrigin}/drivers/call`, {
|
||||||
|
"headers": {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Authorization": `Bearer ${puter.authToken}`,
|
||||||
|
},
|
||||||
|
"body": JSON.stringify({ interface: 'puter-apps', method: 'read', args: { id: { name: id } } }),
|
||||||
|
"method": "POST",
|
||||||
|
});
|
||||||
|
|
||||||
|
const { success, result } = await request.json();
|
||||||
|
return { success, path: result?.index_url };
|
||||||
|
};
|
||||||
|
|
||||||
export class PuterAppCommandProvider {
|
export class PuterAppCommandProvider {
|
||||||
|
|
||||||
async lookup (id) {
|
async lookup (id) {
|
||||||
// Built-in apps will not be returned by the fetch query below, so we handle them separately.
|
const { success, path } = await lookup_app(id);
|
||||||
if (BUILT_IN_APPS.includes(id)) {
|
|
||||||
return {
|
|
||||||
name: id,
|
|
||||||
path: 'Built-in Puter app',
|
|
||||||
// TODO: Parameters and options?
|
|
||||||
async execute(ctx) {
|
|
||||||
const args = {}; // TODO: Passed-in parameters and options would go here
|
|
||||||
await puter.ui.launchApp(id, args);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const request = await fetch(`${puter.APIOrigin}/drivers/call`, {
|
|
||||||
"headers": {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"Authorization": `Bearer ${puter.authToken}`,
|
|
||||||
},
|
|
||||||
"body": JSON.stringify({ interface: 'puter-apps', method: 'read', args: { id: { name: id } } }),
|
|
||||||
"method": "POST",
|
|
||||||
});
|
|
||||||
|
|
||||||
const { success, result } = await request.json();
|
|
||||||
|
|
||||||
if (!success) return;
|
if (!success) return;
|
||||||
|
|
||||||
const { name, index_url } = result;
|
|
||||||
return {
|
return {
|
||||||
name,
|
name: id,
|
||||||
path: index_url,
|
path: path ?? 'Built-in Puter app',
|
||||||
// TODO: Parameters and options?
|
// TODO: Parameters and options?
|
||||||
async execute(ctx) {
|
async execute(ctx) {
|
||||||
const args = {}; // TODO: Passed-in parameters and options would go here
|
const args = {}; // TODO: Passed-in parameters and options would go here
|
||||||
const child = await puter.ui.launchApp(name, args);
|
const child = await puter.ui.launchApp(id, args);
|
||||||
|
|
||||||
// Wait for app to close.
|
// Wait for app to close.
|
||||||
const app_close_promise = new Promise((resolve, reject) => {
|
const app_close_promise = new Promise((resolve, reject) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user