Giter Site home page Giter Site logo

discord-inquirer's People

Contributors

dependabot[bot] avatar elecdeer avatar github-actions[bot] avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

discord-inquirer's Issues

各種ComponentHookの実装

状態値とComponentを返すHook

リアクティブなComponentはこの形で実装する

  • useCheckBoxButtonComponent

  • useSelectComponent

  • useCounterComponent

  • useSelectPaging

    • option[]を受け取って、page値とsetPageとページ内のoption[]を返す
  • useModal

    • LazyなModalコンポーネントパラメータを引数として、open()と結果(Promise)を返す

レンダリング用のスケジューラーを実装する

HookContextのDispatchを書き換える方法だと非同期呼び出しで順序が崩れてしまう。
Reactのようにスケジューラーを実装することで、平行にDispatchとCommit処理が走ってしまうのを防ぐ。

要件

  • Dispatch(再レンダリング)とCommit(差分取得とMessageの送信)をキューに入れることができる
    • Dispatchは同期関数、Commitは非同期関数
    • 常にDispatchはCommitよりも優先度が高い
    • Dispatchの実行によってDispatchがキューに入れられることがある
  • キューからタスクが取り出され実行されるのはマイクロタスクの後
    • エンキュー時にsetImmediateかsetTimeoutをかける
  • キューからタスクを取り出した際、同種のタスクが他にキューに入っていたらスキップする
    • そのタスクがエンキューされた後に追加でエンキューされたら、前者はスキップされる

immediateThrottleによるbatchingが不安定

レンダリングを余計複雑にしてしまっている

dispatchが呼ばれる

  • hookContextをバインド
  • promptをレンダリング
  • hookContextをアンバインド
  • レンダリング結果をコミット
    • 前回と差分があるなら、Messageをedit
  • editが発生したなら再マウント
    • アンマウント(useEffectのクリアが呼ばれる)
    • マウント(useEffectのコールバックが呼ばれる)

dispatchされるのを抑制するためにimmediateThrottleを使っているが、もっと単純にできそう

dispatchが呼ばれうるタイミング

  • promptのレンダリング中
  • アンマウント時
  • マウント時
  • インタラクション受信時などの非同期タイミング

DiscordAPIError[50027]: Invalid Webhook Token

inquireの初回コミット時から15分以上経過した後にコミットすると、Invalid Webhook Tokenでエラーが発生する。

最初にinteraction応答としてMessageを送ってから15分経過すると、最初のトークンの有効期限が切れるのが原因。
別のエンドポイントからなら時間制限なくMessageを編集可能?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.