solana-cookie-jar
TypeScript icon, indicating that this package has built-in type declarations

0.0.3 • Public • Published

cookie monster

Solana Cookie Jar

Library for embedded React components that enable anyone to send SOL and SPL tokens 🍬
Demo (soon) · Report Bug · Request Feature

About The Project

cookie-jar-demo

This library allows anyone to embed SOL and SPL token transfers into a React project. The goal is to help builders create increasingly richer Solana dApps.

CookieJar makes token transfers super easy with the top level CookieJar component. You can also customize implementation with individual components that allow users to select tokens from a connected wallet, input a token amount, invoke a wallet signature request to authorize a token transfer, and more!

Some initial use cases include:

  • custom application token transfers,
  • tipping mechanic for content, or
  • payment functionality gating content or dApp functionality

Obviously, this list is very short. I'm sure there will be a plethora of ideas and use cases over time.

Don't get burnt by creating components in your own oven — use CookieJar 🍪

Built With

Getting Started

This section covers how you can setup up this project locally. If any steps are missing or you can add additional context, open a pull request with your changes.

Prerequisites

You must have npm or yarn installed before working with this library locally. Depending on your operating system, there will be different approaches to installing these libraries.

The internet already has copious documentation on this, so I wonn't repeat here. It's just a internet quick search away.

Installation

  1. Clone the repo
git clone https://github.com/jshiohaha/solana-cookie-jar.git
  1. Navigate to new directory with repository
cd solana-cookie-jar
  1. Install required packages
yarn
  1. Build code
yarn build
  1. Explore other script commands in package.json.

Usage

Using the out-of-the-box CookieJar component is easy. It allows the caller to easily

  • specify which network the component connects to (e.g. devnet, testnet, or mainnet)
  • decide wether or not to show text input to attach a message via the SPL Memo program
  • include an input component to control token input amount
  • include a token selector based on tokens in a wallet
  • send SOL or SPL tokens via invoking signed transactions from the browser

Out-of-the-box CookieJar Component

import { ENV } from "@solana/spl-token-registry";
import { PublicKey } from '@solana/web3.js';
import { CookieJar } from "solana-cookie-jar";

// configure as variable, react state, environment variable, etc.
const destinationAddress = somePublicKey;

// create WalletContextState by connecting wallet via @solana/wallet-adapter-react
const walletStore = walletContextStateInstance;

<CookieJar
    title="Send Tokens"
    actionButtonText="Send"
    // optional: default is ENV.MainnetBeta
    env={ENV.MainnetBeta}
    // @ts-ignore
    walletContextState={walletStore}
    destinationAddress={destinationAddress}
    onError={(err: Error) => console.log('custom error callback function. error: ', err)}
    onSubmit={(signature: string | undefined) => console.log('on successful transaction handler: ', signature)}
/>

Alternative Options

The sub-components that make up the default CookieJar component are exported from this library. So, you can piece together your own custom CookieJar as you please.

You could also fork this repo and add your own features/updates via a pull request. Or, fork this repo and work on your own independent implemenation, if you please.

If you're going to develop locally, you will need to reference the local component since you will be working with a non-published version. You might run into issues if you do not setup local development correctly. I personally ran into an "invalid hook" issue, which was solved by this StackOverflow post.

Roadmap

  • [] Add base components for genesis version 🥳
  • [] Add a changelog
  • [] Add a working demo
  • [] Create common package for shared logic/components
  • [] Improve documentation 🔁
  • [] More to come 🧞

See the open issues for a full list of proposed features (and known issues).

Contributing

Any contributions to improve and/or extend the library are greatly appreciated 🙂

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/NewCookieRecipe)
  3. Commit your Changes (git commit -m 'Add some NewCookieRecipe')
  4. Push to the Branch (git push origin feature/NewCookieRecipe)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Jacob Shiohira - @jshiohaha - dev@jacobshiohira.com

Project Link: https://github.com/jshiohaha/solana-cookie-jar

Acknowledgments

I couldn't have done this without the work of many before myself. Below are links to documentation for libraries & tech integral to building this library. There are likely many that I missed, so I hope to keep adding more over time.

Readme

Keywords

Package Sidebar

Install

npm i solana-cookie-jar

Weekly Downloads

1

Version

0.0.3

License

MIT

Unpacked Size

224 kB

Total Files

93

Last publish

Collaborators

  • jshiohaha