Added quick comments about code
This commit is contained in:
@@ -20,7 +20,14 @@ export const names = [
|
||||
"Walter",
|
||||
];
|
||||
|
||||
/* This function adds faucet account to application global state.
|
||||
* It calls the /api/faucet endpoint which in send a HTTP POST to
|
||||
* https://hooks-testnet.xrpl-labs.com/newcreds and it returns
|
||||
* new account with 10 000 XRP. Hooks Testnet /newcreds endpoint
|
||||
* is protected with CORS so that's why we did our own endpoint
|
||||
*/
|
||||
export const addFaucetAccount = async (showToast: boolean = false) => {
|
||||
// Lets limit the number of faucet accounts to 5 for now
|
||||
if (state.accounts.length > 4) {
|
||||
return toast.error("You can only have maximum 5 accounts");
|
||||
}
|
||||
|
||||
@@ -6,15 +6,24 @@ import { saveFile } from "./saveFile";
|
||||
import { decodeBinary } from "../../utils/decodeBinary";
|
||||
import { ref } from "valtio";
|
||||
|
||||
/* compileCode sends the code of the active file to compile endpoint
|
||||
* If all goes well you will get base64 encoded wasm file back with
|
||||
* some extra logging information if we can provide it. This function
|
||||
* also decodes the returned wasm and creates human readable WAT file
|
||||
* out of it and store both in global state.
|
||||
*/
|
||||
export const compileCode = async (activeId: number) => {
|
||||
// Save the file to global state
|
||||
saveFile(false);
|
||||
if (!process.env.NEXT_PUBLIC_COMPILE_API_ENDPOINT) {
|
||||
throw Error("Missing env!");
|
||||
}
|
||||
// Bail out if we're already compiling
|
||||
if (state.compiling) {
|
||||
// if compiling is ongoing return
|
||||
return;
|
||||
}
|
||||
// Set loading state to true
|
||||
state.compiling = true;
|
||||
try {
|
||||
const res = await fetch(process.env.NEXT_PUBLIC_COMPILE_API_ENDPOINT, {
|
||||
@@ -54,9 +63,11 @@ export const compileCode = async (activeId: number) => {
|
||||
link: Router.asPath.replace("develop", "deploy"),
|
||||
linkText: "Go to deploy",
|
||||
});
|
||||
// Decode base64 encoded wasm that is coming back from the endpoint
|
||||
const bufferData = await decodeBinary(json.output);
|
||||
state.files[state.active].compiledContent = ref(bufferData);
|
||||
|
||||
// Import wabt from and create human readable version of wasm file and
|
||||
// put it into state
|
||||
import("wabt").then((wabt) => {
|
||||
const ww = wabt.default();
|
||||
const myModule = ww.readWasm(new Uint8Array(bufferData), {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import state, { IFile } from '../index';
|
||||
|
||||
/* Initializes empty file to global state */
|
||||
export const createNewFile = (name: string) => {
|
||||
const emptyFile: IFile = { name, language: "c", content: "" };
|
||||
state.files.push(emptyFile);
|
||||
|
||||
@@ -25,6 +25,11 @@ function arrayBufferToHex(arrayBuffer?: ArrayBuffer | null) {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* deployHook function turns the wasm binary into
|
||||
* hex string, signs the transaction and deploys it to
|
||||
* Hooks testnet.
|
||||
*/
|
||||
export const deployHook = async (account: IAccount & { name?: string }) => {
|
||||
if (
|
||||
!state.files ||
|
||||
|
||||
@@ -4,7 +4,9 @@ import state from '../index';
|
||||
|
||||
const octokit = new Octokit();
|
||||
|
||||
// Fetch content from Githug Gists
|
||||
/* Fetches Gist files from Githug Gists based on
|
||||
* gistId and stores the content in global state
|
||||
*/
|
||||
export const fetchFiles = (gistId: string) => {
|
||||
state.loading = true;
|
||||
if (gistId && !state.files.length) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import { derive } from "xrpl-accountlib";
|
||||
import state from '../index';
|
||||
import { names } from './addFaucetAccount';
|
||||
|
||||
// Adds test account to global state with secret key
|
||||
export const importAccount = (secret: string) => {
|
||||
if (!secret) {
|
||||
return toast.error("You need to add secret!");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import toast from "react-hot-toast";
|
||||
import state from '../index';
|
||||
|
||||
// Saves the current editor content to global state
|
||||
export const saveFile = (showToast: boolean = true) => {
|
||||
const editorModels = state.editorCtx?.getModels();
|
||||
const currentModel = editorModels?.find((editorModel) => {
|
||||
|
||||
@@ -7,6 +7,7 @@ import state from '../index';
|
||||
|
||||
const octokit = new Octokit();
|
||||
|
||||
// Syncs the current files from the state to GitHub Gists.
|
||||
export const syncToGist = async (
|
||||
session?: Session | null,
|
||||
createNewGist?: boolean
|
||||
@@ -30,6 +31,10 @@ export const syncToGist = async (
|
||||
session?.user.username === state.gistOwner &&
|
||||
!createNewGist
|
||||
) {
|
||||
// You can only remove files from Gist by updating file with empty contents
|
||||
// So we need to fetch existing files and compare those to local state
|
||||
// and then send empty content if we don't have matching files anymore
|
||||
// on local state
|
||||
const currentFilesRes = await octokit.request("GET /gists/{gist_id}", {
|
||||
gist_id: state.gistId,
|
||||
});
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import state, { IState } from '../index';
|
||||
|
||||
// Updates editor settings and stores them
|
||||
// in global state
|
||||
export const updateEditorSettings = (
|
||||
editorSettings: IState["editorSettings"]
|
||||
) => {
|
||||
|
||||
Reference in New Issue
Block a user