mirror of
https://github.com/fluencelabs/registry-demo
synced 2025-04-25 00:02:14 +00:00
tmp
This commit is contained in:
parent
2d47bfa507
commit
1152eaf8f2
2
.gitignore
vendored
2
.gitignore
vendored
@ -22,3 +22,5 @@ jspm_packages/
|
||||
|
||||
public/*.wasm
|
||||
public/runnerScript.web.js
|
||||
|
||||
src/_aqua
|
@ -1,3 +1,3 @@
|
||||
module Export
|
||||
import createMyRoute, DiscoveryService from "hello-registry.aqua"
|
||||
export createMyRoute, DiscoveryService
|
||||
import createMyRoute, DiscoveryService, discoverAndNotify from "hello-registry.aqua"
|
||||
export createMyRoute, DiscoveryService, discoverAndNotify
|
||||
|
@ -1,4 +1,4 @@
|
||||
module HelloRegistry declares createMyRoute, DiscoveryService
|
||||
module HelloRegistry declares createMyRoute, DiscoveryService, discoverAndNotify
|
||||
|
||||
import "@fluencelabs/registry/routing.aqua"
|
||||
import "@fluencelabs/aqua-lib/builtin.aqua"
|
||||
|
@ -6,16 +6,17 @@
|
||||
</head>
|
||||
<body>
|
||||
<div id="app" class="hidden">
|
||||
<h1></h1>
|
||||
<div>your peer id: <span id="peerid"></span></div>
|
||||
<div>
|
||||
<label>your name</label>
|
||||
<input type="text" id="name" value="my name" />
|
||||
</div>
|
||||
<div>
|
||||
<button id="start">start room</button>
|
||||
<div id="ref-route-id-wrapper" class="hidden">
|
||||
reference route id: <span id="ref-route-id">route id here</span>
|
||||
</div>
|
||||
<div>
|
||||
<button id="join" class="hidden">join room</button>
|
||||
<button id="go">go!</button>
|
||||
</div>
|
||||
<div id="join-link-wrapper" class="hidden">
|
||||
<div>Join link: <span id="join-link"></span></div>
|
||||
@ -23,7 +24,7 @@
|
||||
</div>
|
||||
|
||||
<div id="user-list-wrapper" class="hidden">
|
||||
<span>users in room</span>
|
||||
<h1>users in room</h1>
|
||||
<ul id="user-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,204 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||
* Aqua version: 0.6.1-279
|
||||
*
|
||||
*/
|
||||
import { Fluence, FluencePeer } from '@fluencelabs/fluence';
|
||||
import {
|
||||
CallParams,
|
||||
callFunction,
|
||||
registerService,
|
||||
} from '@fluencelabs/fluence/dist/internal/compilerSupport/v2';
|
||||
|
||||
|
||||
// Services
|
||||
|
||||
export interface DiscoveryServiceDef {
|
||||
notify_discovered: (route_id: string, userName: string, callParams: CallParams<'route_id' | 'userName'>) => { route: string; userName: string; }[] | Promise<{ route: string; userName: string; }[]>;
|
||||
}
|
||||
export function registerDiscoveryService(service: DiscoveryServiceDef): void;
|
||||
export function registerDiscoveryService(serviceId: string, service: DiscoveryServiceDef): void;
|
||||
export function registerDiscoveryService(peer: FluencePeer, service: DiscoveryServiceDef): void;
|
||||
export function registerDiscoveryService(peer: FluencePeer, serviceId: string, service: DiscoveryServiceDef): void;
|
||||
|
||||
|
||||
export function registerDiscoveryService(...args: any) {
|
||||
registerService(
|
||||
args,
|
||||
{
|
||||
"defaultServiceId" : "discoveryService",
|
||||
"functions" : [
|
||||
{
|
||||
"functionName" : "notify_discovered",
|
||||
"argDefs" : [
|
||||
{
|
||||
"name" : "route_id",
|
||||
"argType" : {
|
||||
"tag" : "primitive"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "userName",
|
||||
"argType" : {
|
||||
"tag" : "primitive"
|
||||
}
|
||||
}
|
||||
],
|
||||
"returnType" : {
|
||||
"tag" : "primitive"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Functions
|
||||
|
||||
|
||||
export function createMyRoute(
|
||||
label: string,
|
||||
userName: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<string>;
|
||||
|
||||
export function createMyRoute(
|
||||
peer: FluencePeer,
|
||||
label: string,
|
||||
userName: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<string>;
|
||||
|
||||
export function createMyRoute(...args: any) {
|
||||
|
||||
let script = `
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "label") [] label)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "userName") [] userName)
|
||||
)
|
||||
(new $relay
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(ap -relay- $relay)
|
||||
(call %init_peer_id% ("peer" "timestamp_sec") [] t)
|
||||
)
|
||||
(xor
|
||||
(call -relay- ("registry" "get_key_bytes") [label [] t [] ""] bytes)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("sig" "sign") [bytes] signature)
|
||||
)
|
||||
(xor
|
||||
(call -relay- ("registry" "get_key_id") [label %init_peer_id%] route_id)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(call -relay- ("registry" "get_record_bytes") [route_id userName $relay [] t []] bytes-0)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("sig" "sign") [bytes-0] signature-0)
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "string_to_b58") [route_id] k)
|
||||
(call -relay- ("kad" "neighborhood") [k [] []] nodes)
|
||||
)
|
||||
(par
|
||||
(fold nodes n
|
||||
(par
|
||||
(xor
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call n ("peer" "timestamp_sec") [] t-0)
|
||||
(call n ("trust-graph" "get_weight") [%init_peer_id% t-0] weight)
|
||||
)
|
||||
(call n ("registry" "register_key") [label [] t [] "" signature.$.signature! false weight t-0] result)
|
||||
)
|
||||
(call n ("peer" "timestamp_sec") [] t-1)
|
||||
)
|
||||
(call n ("trust-graph" "get_weight") [%init_peer_id% t-1] weight-0)
|
||||
)
|
||||
(call n ("registry" "put_record") [route_id userName $relay [] t [] signature-0.$.signature! weight-0 t-1] result-0)
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
||||
)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
(null)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5])
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [route_id])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7])
|
||||
)
|
||||
`
|
||||
return callFunction(
|
||||
args,
|
||||
{
|
||||
"functionName" : "createMyRoute",
|
||||
"returnType" : {
|
||||
"tag" : "primitive"
|
||||
},
|
||||
"argDefs" : [
|
||||
{
|
||||
"name" : "label",
|
||||
"argType" : {
|
||||
"tag" : "primitive"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "userName",
|
||||
"argType" : {
|
||||
"tag" : "primitive"
|
||||
}
|
||||
}
|
||||
],
|
||||
"names" : {
|
||||
"relay" : "-relay-",
|
||||
"getDataSrv" : "getDataSrv",
|
||||
"callbackSrv" : "callbackSrv",
|
||||
"responseSrv" : "callbackSrv",
|
||||
"responseFnName" : "response",
|
||||
"errorHandlingSrv" : "errorHandlingSrv",
|
||||
"errorFnName" : "error"
|
||||
}
|
||||
},
|
||||
script
|
||||
)
|
||||
}
|
46
src/index.ts
46
src/index.ts
@ -1,11 +1,11 @@
|
||||
import './index.css';
|
||||
|
||||
import { Fluence } from '@fluencelabs/fluence';
|
||||
import { CallParams, Fluence } from '@fluencelabs/fluence';
|
||||
import { krasnodar } from '@fluencelabs/fluence-network-environment';
|
||||
import avmRunner from './avmRunner';
|
||||
import { createQrCode, disable, getValue, hide, onClick, setText, show } from './util';
|
||||
|
||||
import { createMyRoute, registerDiscoveryService, DiscoveryServiceDef } from './_aqua/export';
|
||||
import { createMyRoute, discoverAndNotify, registerDiscoveryService, DiscoveryServiceDef } from './_aqua/export';
|
||||
|
||||
const label = 'registry-demo';
|
||||
|
||||
@ -14,12 +14,16 @@ interface DiscoveredUser {
|
||||
route: string;
|
||||
userName: string;
|
||||
}
|
||||
|
||||
class DiscoveryService implements DiscoveryServiceDef {
|
||||
private _discoveredUsers: DiscoveredUser[] = [];
|
||||
|
||||
notify_discovered(user: DiscoveredUser): DiscoveredUser[] {
|
||||
if (this._discoveredUsers.every((x) => x.route !== user.route)) {
|
||||
this._discoveredUsers.push(user);
|
||||
notify_discovered(route_id: string, userName: string): DiscoveredUser[] {
|
||||
if (this._discoveredUsers.every((x) => x.route !== route_id)) {
|
||||
this._discoveredUsers.push({
|
||||
userName: userName,
|
||||
route: route_id,
|
||||
});
|
||||
|
||||
if (this.onUpdated) {
|
||||
this.onUpdated(this._discoveredUsers);
|
||||
@ -46,9 +50,9 @@ discoveryServiceInstance.onUpdated = async (users) => {
|
||||
const promises = users.map(async (x) => {
|
||||
const html =
|
||||
// force new line
|
||||
`<div>
|
||||
<div>${x.userName}</div>
|
||||
<canvas id="${x.route}" />
|
||||
`<div class="user">
|
||||
<div class="user__name">${x.userName}</div>
|
||||
<canvas class="user__canvas" id="${x.route}" />
|
||||
</div>`;
|
||||
const li = document.createElement('li');
|
||||
li.innerHTML = html;
|
||||
@ -87,8 +91,8 @@ async function main() {
|
||||
show('app');
|
||||
}
|
||||
|
||||
onClick('start', async () => {
|
||||
disable('start');
|
||||
onClick('go', async () => {
|
||||
disable('go');
|
||||
const myName = getValue('name');
|
||||
const createdRoute = await createMyRoute(label, myName);
|
||||
selfDiscoveryRouteId = createdRoute;
|
||||
@ -120,25 +124,3 @@ onClick('start', async () => {
|
||||
function link(id: string): string {
|
||||
return window.location.origin + '?join=' + id;
|
||||
}
|
||||
|
||||
onClick('join', async () => {
|
||||
const myName = getValue('name');
|
||||
// const res = await joinRoom(roomPeerId, label);
|
||||
// if(res is not fine)
|
||||
// throw
|
||||
|
||||
show('room-list-wrapper');
|
||||
});
|
||||
|
||||
// async function loadMemberList() {
|
||||
// const members = await getMembers(roomPeerId, label);
|
||||
// const liElems = members.map((x) => {
|
||||
// const el = document.createElement('li');
|
||||
// el.textContent = x;
|
||||
// return el;
|
||||
// });
|
||||
// const roomElem = document.getElementById('room-list');
|
||||
// roomElem?.replaceChildren(...liElems);
|
||||
// }
|
||||
|
||||
main();
|
||||
|
Loading…
x
Reference in New Issue
Block a user