81 lines
2.5 KiB
JavaScript
81 lines
2.5 KiB
JavaScript
import React from "react";
|
|
import { TraInfoEXWidget } from "./TraInfoEXWidget";
|
|
import dayjs from "dayjs";
|
|
import { ToastAndroid } from "react-native";
|
|
import { InfoWidget } from "./InfoWidget";
|
|
import { AS } from "../../storageControl";
|
|
|
|
export const nameToWidget = {
|
|
// Hello will be the **name** with which we will reference our widget.
|
|
JR_shikoku_train_info: TraInfoEXWidget,
|
|
Info_Widget: InfoWidget,
|
|
};
|
|
|
|
export const getInfoString = async () => {
|
|
// Fetch data from the server
|
|
const time = dayjs().format("HH:mm");
|
|
const text = await fetch(
|
|
"https://script.google.com/macros/s/AKfycbz80LcaEUrhnlEsLkJy0LG2IRO3DBVQhfNmN1d_0f_HvtsujNQpxM90SrV9yKWH_JG1Ww/exec"
|
|
)
|
|
.then((response) => response.text())
|
|
.then((data) => {
|
|
if (data !== "") {
|
|
return data.split("^");
|
|
}
|
|
return null;
|
|
});
|
|
ToastAndroid.show(`${text}`, ToastAndroid.SHORT);
|
|
return { time, text };
|
|
};
|
|
|
|
export const getDelayData = async () => {
|
|
// Fetch data from the server
|
|
const time = dayjs().format("HH:mm");
|
|
const delayString = await fetch(
|
|
"https://script.google.com/macros/s/AKfycbyKxch7z7l8e07LXulRHqxjVoIiB13kcgvoToLE-rqlxLmLSKdlmqz0FI1F2EuA7Zfg/exec"
|
|
)
|
|
.then((response) => response.text())
|
|
.then((data) => {
|
|
if (data !== "") {
|
|
return data.split("^");
|
|
}
|
|
return null;
|
|
});
|
|
ToastAndroid.show(`${delayString}`, ToastAndroid.SHORT);
|
|
return { time, delayString };
|
|
};
|
|
export async function widgetTaskHandler(props) {
|
|
const WidgetName = await AS.getItem(
|
|
`widgetType/${props.widgetInfo.widgetId}`
|
|
).catch((e) => "JR_shikoku_train_info");
|
|
ToastAndroid.show(
|
|
`Widget Action: ${JSON.stringify(props.widgetInfo.widgetId)}`,
|
|
ToastAndroid.SHORT
|
|
);
|
|
ToastAndroid.show(`Widget Name: ${WidgetName}`, ToastAndroid.SHORT);
|
|
switch (props.widgetAction) {
|
|
case "WIDGET_ADDED":
|
|
case "WIDGET_UPDATE":
|
|
case "WIDGET_CLICK":
|
|
case "WIDGET_RESIZED":
|
|
// Not needed for now
|
|
if (WidgetName === "JR_shikoku_train_info") {
|
|
const Widget = nameToWidget[WidgetName];
|
|
const { time, delayString } = await getDelayData();
|
|
props.renderWidget(<Widget time={time} delayString={delayString} />);
|
|
} else if (WidgetName === "Info_Widget") {
|
|
const Widget = nameToWidget[WidgetName];
|
|
const { time, text } = await getInfoString();
|
|
props.renderWidget(<Widget time={time} delayString={text} />);
|
|
}
|
|
|
|
break;
|
|
|
|
case "WIDGET_DELETED":
|
|
// Not needed for now
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|