second.exchange icon indicating copy to clipboard operation
second.exchange copied to clipboard

Create Factory Services

Open saranshisatgit opened this issue 3 years ago • 3 comments

  • [ ] For services to work , a backbone approach
  • [ ] Key Pair Management
  • [ ] DB Management
  • [ ] Creating Streams
  • [ ] methods Setup and expose them via API or SDK
  • [ ] work on content Delivery using sdk

saranshisatgit avatar Sep 21 '22 15:09 saranshisatgit

@thozinza and @thotrung

saranshisatgit avatar Sep 23 '22 11:09 saranshisatgit

@saranshisatgit I am not very clear about this, could you add more detail?

ThoTrung avatar Sep 29 '22 10:09 ThoTrung

The SDK Service part

  1. How does SDK's work?

They expose certain functions or methods that can be or should be used via any service or UI or anything

  1. npm packages like @2nd/sdk

  2. What do they contain ?

 async initConnection(): Promise<NostrEvent[]> {
      logger.info('Init Connection Services')
      const fetchedEvents: NostrEvent[] = [];
      let userList = [];
      if (typeof window !== undefined) {
        const privKey =
          localStorage.getItem("keys") !== null
            ? JSON.parse(localStorage.getItem("keys")!).privateKey
            : null;
        if (privKey !== null) pool.setPrivateKey(privKey);
        const userIdList =
          localStorage.getItem("follow-list") !== null
            ? JSON.parse(JSON.stringify(localStorage.getItem("follow-list")))
            : '[]';
        console.log(userIdList);
        // console.log(JSON.parse(userIdList));
        userList = JSON.parse(userIdList);
        // userList =
        //   typeof userIdList === "object" ? JSON.parse(userIdList) : userList;
      }
      const relays = await getRelays();
      relays.map(async (relayUrl: string) => await pool.addRelay(relayUrl));

      await pool.sub(
        {
          cb: async (event: NostrEvent) => {
            switch (event.kind) {
              case 0:
              case 1:
              case 2:
                fetchedEvents.push(event);
                return;
            }
          },
          filter: [
            {
              authors: userList,
              kinds: [0, 1, 3],
            },
          ],
        },
        "profile-browser"
      );
      return fetchedEvents;
    },
  1. How the developers are going to call it?
  • import {sdk} 2nd/sdk
  1. Then they use the function like this
  • sdk.initConnection()
  1. SDK becomes your API
  • sdk.createKeyPair()

Hence its standardised

maektwain avatar Oct 03 '22 11:10 maektwain