2017-06-29 12:54:02 -06:00
|
|
|
import { Farmbot } from "farmbot";
|
2017-10-10 11:59:08 -06:00
|
|
|
import { bail } from "./util";
|
|
|
|
import { set } from "lodash";
|
2017-10-10 15:07:23 -06:00
|
|
|
import { AuthState } from "./auth/interfaces";
|
|
|
|
import { maybeRefreshToken } from "./refresh_token";
|
2017-06-29 12:54:02 -06:00
|
|
|
|
2017-10-10 11:59:08 -06:00
|
|
|
let device: Farmbot;
|
2017-06-29 12:54:02 -06:00
|
|
|
|
2017-10-10 15:07:23 -06:00
|
|
|
const secure = location.protocol === "https:"; // :(
|
|
|
|
|
2017-10-10 11:59:08 -06:00
|
|
|
export const getDevice = (): Farmbot => (device || bail("NO DEVICE SET"));
|
2017-06-29 12:54:02 -06:00
|
|
|
|
2017-10-10 15:07:23 -06:00
|
|
|
export function fetchNewDevice(oldToken: AuthState): Promise<Farmbot> {
|
|
|
|
return maybeRefreshToken(oldToken)
|
|
|
|
.then(({ token }) => {
|
|
|
|
device = new Farmbot({ token: token.encoded, secure });
|
|
|
|
set(window, "current_bot", device);
|
2017-10-10 15:50:57 -06:00
|
|
|
return device
|
|
|
|
.connect()
|
|
|
|
.then(() => {
|
|
|
|
return device;
|
|
|
|
}, () => bail("NO CONNECT"));
|
2017-10-10 15:07:23 -06:00
|
|
|
});
|
2017-10-10 11:59:08 -06:00
|
|
|
}
|