const contract = "dev-1691329760854-72187628563257"; const methods = ["deploy_board", "delete_board"]; const accountId = context.accountId; State.init({ boards: [], selectedBoardContract: undefined, bootStrapping: true, showCreateBoardModal: false, loggedIn: false, }); const createBoard = (boardName, boardAccount) => { Near.fakCall(contract, "deploy_board", { name: boardName, account: boardAccount, members: [accountId] }).then( (res) => { console.log("create board", res); getBoards(); } ); }; const onBoardSelected = (account) => { console.log("select board", account); State.update({ selectedBoardContract: account }); }; const bootStrapApp = () => { Near.hasValidFak(contract).then((result) => { console.log("hasValidFak", result); if (result) { State.update({ bootStrapping: false, loggedIn: true }); getBoards(); } else { State.update({ bootStrapping: false, loggedIn: false }); } }); }; const getBoards = () => { Near.asyncView(contract, "get_my_boards", { account_id: "xabi.testnet"}, "final", false).then( (boards) => { console.log("boards", boards); State.update({ boards, selectedBoardContract: boards.length > 0 ? boards[0].account : undefined, bootStrapping: false, }); } ); }; if (state.bootStrapping) { bootStrapApp(); return <Widget src="xabi.testnet/widget/Calimero.Loading" />; } if (!state.loggedIn) { return ( <Widget src="xabi.testnet/widget/Calimero.JoinApp" props={{ appName: "TaskChain", contractName: contract, methodNames: methods, }} /> ); } return ( <div style={{ display: "flex", flexDirection: "row", height: "80vh", width: "100%", }} > <Widget src="xabi.testnet/widget/TaskChain.SideMenu" props={{ boards: state.boards, selectedBoardContract: state.selectedBoardContract, createBoard, onBoardSelected, }} /> <div class="container"> {state.selectedBoardContract && ( <Widget src="xabi.testnet/widget/Board" props={{ contract: state.selectedBoardContract, }} /> )} </div> </div> );