chore: Clarify usage of window fields in IPC.js

Resolves these eslint errors:

/puter/src/IPC.js
    53:69  error  'appCallbackFunctions' is not defined                no-undef
    55:9   error  'appCallbackFunctions' is not defined                no-undef
    57:16  error  'appCallbackFunctions' is not defined                no-undef
    81:33  error  'window_for_app_instance' is not defined             no-undef
    84:27  error  'iframe_for_app_instance' is not defined             no-undef
   105:48  error  Empty block statement                                no-empty
   180:18  error  'api_origin' is not defined                          no-undef
   190:44  error  'auth_token' is not defined                          no-undef
   194:21  error  'logout' is not defined                              no-undef
   207:18  error  'api_origin' is not defined                          no-undef
   216:44  error  'auth_token' is not defined                          no-undef
   220:21  error  'logout' is not defined                              no-undef
   239:18  error  'api_origin' is not defined                          no-undef
   248:44  error  'auth_token' is not defined                          no-undef
   252:21  error  'logout' is not defined                              no-undef
   268:13  error  'is_auth' is not defined                             no-undef
   309:13  error  'is_auth' is not defined                             no-undef
   348:27  error  'window_for_app_instance' is not defined             no-undef
   360:27  error  'window_for_app_instance' is not defined             no-undef
   576:35  error  'uuidv4' is not defined                              no-undef
   582:9   error  'launch_app' is not defined                          no-undef
   597:37  error  'appdata_path' is not defined                        no-undef
   629:12  error  'appdata_signatures' is not defined                  no-undef
   633:23  error  'appdata_signatures' is not defined                  no-undef
   638:30  error  'appdata_path' is not defined                        no-undef
   647:25  error  'appdata_signatures' is not defined                  no-undef
   664:29  error  'appdata_signatures' is not defined                  no-undef
   682:13  error  'is_auth' is not defined                             no-undef
   717:13  error  'is_auth' is not defined                             no-undef
   745:13  error  'is_auth' is not defined                             no-undef
   773:13  error  'is_auth' is not defined                             no-undef
   783:22  error  'api_origin' is not defined                          no-undef
   793:48  error  'auth_token' is not defined                          no-undef
   797:25  error  'logout' is not defined                              no-undef
   825:13  error  'is_auth' is not defined                             no-undef
   857:36  error  'operation_id' is not defined                        no-undef
   872:41  error  'auth_token' is not defined                          no-undef
   873:41  error  'api_origin' is not defined                          no-undef
   939:45  error  'item_icon' is not defined                           no-undef
   951:33  error  'sort_items' is not defined                          no-undef
   954:29  error  'show_save_account_notice_if_needed' is not defined  no-undef
   998:38  error  'busy_indicator_hide_delay' is not defined           no-undef
  1004:33  error  'busy_indicator_hide_delay' is not defined           no-undef
  1018:37  error  'pictures_path' is not defined                       no-undef
  1020:37  error  'desktop_path' is not defined                        no-undef
  1022:37  error  'documents_path' is not defined                      no-undef
  1024:37  error  'videos_path' is not defined                         no-undef
  1026:37  error  'audio_path' is not defined                          no-undef
  1028:37  error  'appdata_path' is not defined                        no-undef
  1032:13  error  'is_auth' is not defined                             no-undef
  1044:28  error  'operation_id' is not defined                        no-undef
  1059:33  error  'auth_token' is not defined                          no-undef
  1060:33  error  'api_origin' is not defined                          no-undef
  1145:31  error  'iframe_for_app_instance' is not defined             no-undef
  1163:31  error  'window_for_app_instance' is not defined             no-undef
  1178:36  error  'get_apps' is not defined                            no-undef
  1199:11  error  'window_for_app_instance' is not defined             no-undef
This commit is contained in:
Sam Atkins 2024-05-01 14:07:35 +01:00
parent ca65ed1258
commit 280479c0c6

View File

@ -50,11 +50,11 @@ window.addEventListener('message', async (event) => {
// --------------------------------------------------------
// A response to a GUI message received from the app.
// --------------------------------------------------------
if (typeof event.data.original_msg_id !== "undefined" && typeof appCallbackFunctions[event.data.original_msg_id] !== "undefined") {
if (typeof event.data.original_msg_id !== "undefined" && typeof window.appCallbackFunctions[event.data.original_msg_id] !== "undefined") {
// Execute callback
appCallbackFunctions[event.data.original_msg_id](event.data);
window.appCallbackFunctions[event.data.original_msg_id](event.data);
// Remove this callback function since it won't be needed again
delete appCallbackFunctions[event.data.original_msg_id];
delete window.appCallbackFunctions[event.data.original_msg_id];
// Done
return;
@ -78,10 +78,10 @@ window.addEventListener('message', async (event) => {
return;
}
const $el_parent_window = $(window_for_app_instance(event.data.appInstanceID));
const $el_parent_window = $(window.window_for_app_instance(event.data.appInstanceID));
const parent_window_id = $el_parent_window.attr('data-id');
const $el_parent_disable_mask = $el_parent_window.find('.window-disable-mask');
const target_iframe = iframe_for_app_instance(event.data.appInstanceID);
const target_iframe = window.iframe_for_app_instance(event.data.appInstanceID);
const msg_id = event.data.uuid;
const app_name = $(target_iframe).attr('data-app');
const app_uuid = $el_parent_window.attr('data-app_uuid');
@ -103,6 +103,7 @@ window.addEventListener('message', async (event) => {
// windowFocused
//-------------------------------------------------
else if(event.data.msg === 'windowFocused'){
// TODO: Respond to this
}
//--------------------------------------------------------
// ALERT
@ -177,7 +178,7 @@ window.addEventListener('message', async (event) => {
else if(event.data.msg === 'setItem' && event.data.key && event.data.value){
// todo: validate key and value to avoid unnecessary api calls
return await $.ajax({
url: api_origin + "/setItem",
url: window.api_origin + "/setItem",
type: 'POST',
data: JSON.stringify({
app: app_uuid,
@ -187,11 +188,11 @@ window.addEventListener('message', async (event) => {
async: true,
contentType: "application/json",
headers: {
"Authorization": "Bearer "+auth_token
"Authorization": "Bearer "+window.auth_token
},
statusCode: {
401: function () {
logout();
window.logout();
},
},
success: function (fsentry){
@ -204,7 +205,7 @@ window.addEventListener('message', async (event) => {
else if(event.data.msg === 'getItem' && event.data.key){
// todo: validate key to avoid unnecessary api calls
$.ajax({
url: api_origin + "/getItem",
url: window.api_origin + "/getItem",
type: 'POST',
data: JSON.stringify({
key: event.data.key,
@ -213,11 +214,11 @@ window.addEventListener('message', async (event) => {
async: true,
contentType: "application/json",
headers: {
"Authorization": "Bearer "+auth_token
"Authorization": "Bearer "+window.auth_token
},
statusCode: {
401: function () {
logout();
window.logout();
},
},
success: function (result){
@ -236,7 +237,7 @@ window.addEventListener('message', async (event) => {
else if(event.data.msg === 'removeItem' && event.data.key){
// todo: validate key to avoid unnecessary api calls
$.ajax({
url: api_origin + "/removeItem",
url: window.api_origin + "/removeItem",
type: 'POST',
data: JSON.stringify({
key: event.data.key,
@ -245,11 +246,11 @@ window.addEventListener('message', async (event) => {
async: true,
contentType: "application/json",
headers: {
"Authorization": "Bearer "+auth_token
"Authorization": "Bearer "+window.auth_token
},
statusCode: {
401: function () {
logout();
window.logout();
},
},
success: function (result){
@ -265,7 +266,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'showOpenFilePicker'){
// Auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
// Disable parent window
@ -306,7 +307,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'showDirectoryPicker'){
// Auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
// Disable parent window
@ -345,7 +346,7 @@ window.addEventListener('message', async (event) => {
// setWindowTitle
//--------------------------------------------------------
else if(event.data.msg === 'setWindowTitle' && event.data.new_title !== undefined){
const el_window = window_for_app_instance(event.data.appInstanceID);
const el_window = window.window_for_app_instance(event.data.appInstanceID);
// set window title
$(el_window).find(`.window-head-title`).html(html_encode(event.data.new_title));
// send confirmation to requester window
@ -357,7 +358,7 @@ window.addEventListener('message', async (event) => {
// setMenubar
//--------------------------------------------------------
else if(event.data.msg === 'setMenubar') {
const el_window = window_for_app_instance(event.data.appInstanceID);
const el_window = window.window_for_app_instance(event.data.appInstanceID);
console.error(`EXPERIMENTAL: setMenubar is a work-in-progress`);
const hydrator = puter.util.rpc.getHydrator({
@ -573,13 +574,13 @@ window.addEventListener('message', async (event) => {
else if(event.data.msg === 'launchApp'){
// TODO: Determine if the app is allowed to launch child apps? We may want to limit this to prevent abuse.
// remember app for launch callback later
const child_instance_id = uuidv4();
const child_instance_id = window.uuidv4();
window.child_launch_callbacks[child_instance_id] = {
parent_instance_id: event.data.appInstanceID,
launch_msg_id: msg_id,
};
// launch child app
launch_app({
window.launch_app({
name: event.data.app_name ?? app_name,
args: event.data.args ?? {},
parent_instance_id: event.data.appInstanceID,
@ -594,7 +595,7 @@ window.addEventListener('message', async (event) => {
event.data.path = path.resolve(event.data.path);
// join with appdata dir
const file_path = path.join(appdata_path, app_uuid, event.data.path);
const file_path = path.join(window.appdata_path, app_uuid, event.data.path);
puter.fs.sign(app_uuid, {
path: file_path,
@ -626,16 +627,16 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
// todo appdata should be provided from the /open_item api call
else if(event.data.msg === 'getAppData'){
if(appdata_signatures[app_uuid]){
if(window.appdata_signatures[app_uuid]){
target_iframe.contentWindow.postMessage({
msg: "getAppDataSucceeded",
original_msg_id: msg_id,
item: appdata_signatures[app_uuid],
item: window.appdata_signatures[app_uuid],
}, '*');
}
// make app directory if it doesn't exist
puter.fs.mkdir({
path: path.join( appdata_path, app_uuid),
path: path.join( window.appdata_path, app_uuid),
rename: false,
overwrite: false,
success: function(dir){
@ -644,7 +645,7 @@ window.addEventListener('message', async (event) => {
action: 'write',
success: function(signature){
signature = signature.items;
appdata_signatures[app_uuid] = signature;
window.appdata_signatures[app_uuid] = signature;
// send confirmation to requester window
target_iframe.contentWindow.postMessage({
msg: "getAppDataSucceeded",
@ -661,7 +662,7 @@ window.addEventListener('message', async (event) => {
action: 'write',
success: function(signature){
signature = signature.items;
appdata_signatures[app_uuid] = signature;
window.appdata_signatures[app_uuid] = signature;
// send confirmation to requester window
target_iframe.contentWindow.postMessage({
msg: "getAppDataSucceeded",
@ -679,7 +680,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'requestPermission'){
// auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
// options must be an object
@ -714,7 +715,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'showFontPicker'){
// auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
// set options
@ -742,7 +743,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'showColorPicker'){
// Auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
// set options
@ -770,7 +771,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'setWallpaper'){
// Auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
// No options?
@ -780,7 +781,7 @@ window.addEventListener('message', async (event) => {
// /set-desktop-bg
try{
await $.ajax({
url: api_origin + "/set-desktop-bg",
url: window.api_origin + "/set-desktop-bg",
type: 'POST',
data: JSON.stringify({
url: event.data.readURL,
@ -790,11 +791,11 @@ window.addEventListener('message', async (event) => {
async: true,
contentType: "application/json",
headers: {
"Authorization": "Bearer "+auth_token
"Authorization": "Bearer "+window.auth_token
},
statusCode: {
401: function () {
logout();
window.logout();
},
},
});
@ -822,7 +823,7 @@ window.addEventListener('message', async (event) => {
//--------------------------------------------------------
else if(event.data.msg === 'showSaveFilePicker'){
//auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
//disable parent window
@ -854,7 +855,7 @@ window.addEventListener('message', async (event) => {
// -------------------------------------
if(event.data.url){
// download progress tracker
let dl_op_id = operation_id++;
let dl_op_id = window.operation_id++;
// upload progress tracker defaults
window.progress_tracker[dl_op_id] = [];
@ -869,8 +870,8 @@ window.addEventListener('message', async (event) => {
url: event.data.url,
name: path.basename(target_path),
dest_path: path.dirname(target_path),
auth_token: auth_token,
api_origin: api_origin,
auth_token: window.auth_token,
api_origin: window.api_origin,
dedupe_name: false,
overwrite: false,
operation_id: dl_op_id,
@ -936,7 +937,7 @@ window.addEventListener('message', async (event) => {
immutable: res.immutable,
associated_app_name: res.associated_app?.name,
path: target_path,
icon: await item_icon(res),
icon: await window.item_icon(res),
name: path.basename(target_path),
uid: res.uid,
size: res.size,
@ -948,10 +949,10 @@ window.addEventListener('message', async (event) => {
});
// sort each window
$(`.item-container[data-path="${html_encode(path.dirname(target_path))}" i]`).each(function(){
sort_items(this, $(this).attr('data-sort_by'), $(this).attr('data-sort_order'))
window.sort_items(this, $(this).attr('data-sort_by'), $(this).attr('data-sort_order'))
});
$(el_filedialog_window).close();
show_save_account_notice_if_needed();
window.show_save_account_notice_if_needed();
}
catch(err){
// item with same name exists
@ -995,13 +996,13 @@ window.addEventListener('message', async (event) => {
// done
let busy_duration = (Date.now() - busy_init_ts);
if( busy_duration >= busy_indicator_hide_delay){
if( busy_duration >= window.busy_indicator_hide_delay){
$(el_filedialog_window).close();
}else{
setTimeout(() => {
// close this dialog
$(el_filedialog_window).close();
}, Math.abs(busy_indicator_hide_delay - busy_duration));
}, Math.abs(window.busy_indicator_hide_delay - busy_duration));
}
}
});
@ -1015,21 +1016,21 @@ window.addEventListener('message', async (event) => {
let create_missing_ancestors = false;
if(event.data.msg === 'saveToPictures')
target_path = path.join(pictures_path, event.data.filename);
target_path = path.join(window.pictures_path, event.data.filename);
else if(event.data.msg === 'saveToDesktop')
target_path = path.join(desktop_path, event.data.filename);
target_path = path.join(window.desktop_path, event.data.filename);
else if(event.data.msg === 'saveToDocuments')
target_path = path.join(documents_path, event.data.filename);
target_path = path.join(window.documents_path, event.data.filename);
else if(event.data.msg === 'saveToVideos')
target_path = path.join(videos_path, event.data.filename);
target_path = path.join(window.videos_path, event.data.filename);
else if(event.data.msg === 'saveToAudio')
target_path = path.join(audio_path, event.data.filename);
target_path = path.join(window.audio_path, event.data.filename);
else if(event.data.msg === 'saveToAppData'){
target_path = path.join(appdata_path, app_uuid, event.data.filename);
target_path = path.join(window.appdata_path, app_uuid, event.data.filename);
create_missing_ancestors = true;
}
//auth
if(!is_auth() && !(await UIWindowSignup({referrer: app_name})))
if(!window.is_auth() && !(await UIWindowSignup({referrer: app_name})))
return;
let item_with_same_name_already_exists = true;
@ -1041,7 +1042,7 @@ window.addEventListener('message', async (event) => {
if(event.data.url){
let overwrite = false;
// download progress tracker
let dl_op_id = operation_id++;
let dl_op_id = window.operation_id++;
// upload progress tracker defaults
window.progress_tracker[dl_op_id] = [];
@ -1056,8 +1057,8 @@ window.addEventListener('message', async (event) => {
url: event.data.url,
name: path.basename(target_path),
dest_path: path.dirname(target_path),
auth_token: auth_token,
api_origin: api_origin,
auth_token: window.auth_token,
api_origin: window.api_origin,
dedupe_name: true,
overwrite: false,
operation_id: dl_op_id,
@ -1142,7 +1143,7 @@ window.addEventListener('message', async (event) => {
// TODO: Track message traffic between apps
// pass on the message
const target_iframe = iframe_for_app_instance(targetAppInstanceID);
const target_iframe = window.iframe_for_app_instance(targetAppInstanceID);
if (!target_iframe) {
console.error('Failed to send message to non-existent app', event);
return;
@ -1160,7 +1161,7 @@ window.addEventListener('message', async (event) => {
else if (event.data.msg === 'closeApp') {
const { appInstanceID, targetAppInstanceID } = event.data;
const target_window = window_for_app_instance(targetAppInstanceID);
const target_window = window.window_for_app_instance(targetAppInstanceID);
if (!target_window) {
console.warn(`Failed to close non-existent app ${targetAppInstanceID}`);
return;
@ -1175,7 +1176,7 @@ window.addEventListener('message', async (event) => {
}
// God-mode apps can close anything
const app_info = await get_apps(app_name);
const app_info = await window.get_apps(app_name);
if (app_info.godmode === 1) {
console.log(`⚠️ Allowing GODMODE app ${appInstanceID} to close app ${targetAppInstanceID}`);
return true;
@ -1196,6 +1197,6 @@ window.addEventListener('message', async (event) => {
// exit
//--------------------------------------------------------
else if(event.data.msg === 'exit'){
$(window_for_app_instance(event.data.appInstanceID)).close({bypass_iframe_messaging: true});
$(window.window_for_app_instance(event.data.appInstanceID)).close({bypass_iframe_messaging: true});
}
});