WIP
parent
035cab9ca5
commit
830097a509
|
@ -18,7 +18,7 @@ module CeleryScriptSettingsBag
|
|||
install_farmware update_farmware take_photo zero
|
||||
install_first_party_farmware remove_farmware
|
||||
find_home register_gpio unregister_gpio
|
||||
set_servo_angle)
|
||||
set_servo_angle change_ownership)
|
||||
ALLOWED_PACKAGES = %w(farmbot_os arduino_firmware)
|
||||
ALLOWED_CHAGES = %w(add remove update)
|
||||
RESOURCE_NAME = %w(images plants regimens peripherals
|
||||
|
@ -216,6 +216,7 @@ module CeleryScriptSettingsBag
|
|||
.node(:variable_declaration, [:label, :data_value], [])
|
||||
.node(:parameter_declaration, [:label, :data_type], [])
|
||||
.node(:set_servo_angle, [:pin_number, :pin_value], [])
|
||||
.node(:change_ownership, [], [:pair])
|
||||
.node(:install_first_party_farmware, [])
|
||||
|
||||
ANY_ARG_NAME = Corpus.as_json[:args].pluck("name").map(&:to_s)
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
"enzyme": "^3.1.0",
|
||||
"enzyme-adapter-react-16": "^1.1.0",
|
||||
"extract-text-webpack-plugin": "^3.0.1",
|
||||
"farmbot": "5.4.0-rc5",
|
||||
"farmbot": "5.4.0-rc9",
|
||||
"farmbot-toastr": "^1.0.3",
|
||||
"fastclick": "^1.0.6",
|
||||
"file-loader": "^1.1.5",
|
||||
|
|
|
@ -3,7 +3,7 @@ import { Row, Col, BlurableInput } from "../../../ui/index";
|
|||
import { t } from "i18next";
|
||||
import { info, success } from "farmbot-toastr";
|
||||
import { getDevice } from "../../../device";
|
||||
import { rpcRequest } from "farmbot";
|
||||
import { transferOwnership } from "../../transfer_ownership/transfer_ownership";
|
||||
|
||||
interface ChangeOwnershipFormState {
|
||||
email: string;
|
||||
|
@ -21,16 +21,9 @@ export class ChangeOwnershipForm
|
|||
|
||||
submitOwnershipChange = () => {
|
||||
info(t("Sending change of ownership..."), t("Sending"));
|
||||
getDevice()
|
||||
.send(rpcRequest([
|
||||
{ kind: "pair", args: { label: "email", value: this.state.email } },
|
||||
{ kind: "pair", args: { label: "secret", value: 0 } },
|
||||
{ kind: "pair", args: { label: "server", value: this.state.server } }
|
||||
// tslint:disable-next-line:no-any
|
||||
] as any))
|
||||
.then(() => {
|
||||
success(t("Received change of ownership."));
|
||||
});
|
||||
const { email, password, server } = this.state;
|
||||
transferOwnership({ email, password, server, device: getDevice() })
|
||||
.then(() => success(t("Received change of ownership.")));
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
import { TransferProps } from "./transfer_ownership";
|
||||
import axios from "axios";
|
||||
|
||||
const certUrl = (server: string) => `${server}/api/users/control_certificate`;
|
||||
|
||||
export async function createTransferCert(input: TransferProps): Promise<string> {
|
||||
const { server, email, password } = input;
|
||||
const { data } =
|
||||
await axios.post<string>(certUrl(server), { email, password });
|
||||
return Promise.resolve(data);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import { Farmbot, toPairs, rpcRequest } from "farmbot";
|
||||
import { createTransferCert } from "./create_transfer_cert";
|
||||
|
||||
export interface TransferProps {
|
||||
email: string;
|
||||
password: string;
|
||||
server: string;
|
||||
device: Farmbot;
|
||||
}
|
||||
|
||||
export async function transferOwnership(input: TransferProps): Promise<void> {
|
||||
const { email, server, device } = input;
|
||||
const secret = await createTransferCert(input);
|
||||
const body = toPairs({ email, server, secret });
|
||||
await device.send(rpcRequest([{ kind: "change_ownership", args: {}, body }]));
|
||||
return Promise.resolve();
|
||||
}
|
|
@ -102,17 +102,18 @@ export enum MinVersionOverride {
|
|||
export function shouldDisplay(
|
||||
current: string | undefined, lookupData: MinOsFeatureLookup | undefined) {
|
||||
return function (feature: Feature): boolean {
|
||||
if (isString(current)) {
|
||||
const min = (lookupData || {})[feature] || MinVersionOverride.NEVER;
|
||||
switch (semverCompare(current, min)) {
|
||||
case SemverResult.LEFT_IS_GREATER:
|
||||
case SemverResult.EQUAL:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
// if (isString(current)) {
|
||||
// const min = (lookupData || {})[feature] || MinVersionOverride.NEVER;
|
||||
// switch (semverCompare(current, min)) {
|
||||
// case SemverResult.LEFT_IS_GREATER:
|
||||
// case SemverResult.EQUAL:
|
||||
// return true;
|
||||
// default:
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// return false;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -2258,9 +2258,9 @@ farmbot-toastr@^1.0.0, farmbot-toastr@^1.0.3:
|
|||
farmbot-toastr "^1.0.0"
|
||||
typescript "^2.3.4"
|
||||
|
||||
farmbot@5.4.0-rc5:
|
||||
version "5.4.0-rc5"
|
||||
resolved "https://registry.yarnpkg.com/farmbot/-/farmbot-5.4.0-rc5.tgz#92ab974e9439601b10ba5ea5073f1cf993f2def0"
|
||||
farmbot@5.4.0-rc9:
|
||||
version "5.4.0-rc9"
|
||||
resolved "https://registry.yarnpkg.com/farmbot/-/farmbot-5.4.0-rc9.tgz#8294a29866d6f5b44c4a68960c11af071208234c"
|
||||
dependencies:
|
||||
mqtt "2.15.0"
|
||||
typescript "^2.4.2"
|
||||
|
|
Loading…
Reference in New Issue