Giter VIP home page Giter VIP logo

Comments (11)

pantasystem avatar pantasystem commented on June 2, 2024 1

案2はアカウントが切り替わるごとにストアを切り替える必要があり、またストアごとにイベントを取り扱うようなケースでは一度サブスクライブを解除する必要があるので不便と考えられる。

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024 1

Idとしては案1が相応しいと考える。
またこのケースで実装する場合、候補キーとして扱えるIdオブジェクトを作成しIdの実装方法に依存しないようにすることが最適だと考えられる。

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

考えられる具体的な方法

  1. Entityを持つLiveDataを持たせたStateパターンで管理し集約単位で管理するようにする。
  2. Storeで集中的に管理し変更などのイベントをFlowなどでViewModelへ伝えViewへ更新イベントを伝播させる
  3. Reduxパターンを導入する

いずれもStoreなどを用いて集中的に管理していることには変わりがない。
また更新イベントの伝播方法に違いがあるがあまり違いはないがViewModelへの実装が大きく変わってしまう。

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

1はViewModelの実装が複雑になることが予想される
2はLiveDataに完全に依存しており、LiveData特有の挙動がデメリットにもデメリットにも転じる可能性がある。
3は変更量的に無理がある可能性がある。

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024
  • User
  • Note
  • File
  • Poll
    以上を集約とする

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

LiveDataを使用する場合どの部分にLiveDataを利用するのか?
State部分
NoteならReactionなど

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

削除状態も管理するのならStateなどでNoteをラップするのが好ましいか?

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

現状得た結論
Entityには状態は持たせない。
またModel間の依存が考えられるためEntityごとにFlowやObservableをもたせるよりDispatcherなどでイベントを流すほうが好ましいと考えられる。
理由として、RecyclerView.Adapterでobserveするのはリソース開放のタイミングが非常に複雑になりややこしくなることが考えられる。

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

今後以下のような責務をもたせたい
Model 状態を持ち変更や削除などのイベントを発行する
ViewModel Modelから得た情報をViewが扱いやすい形に変換する。また変換する

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

Idについての問題
現状リモートと同じIdを使用しているが以下の問題が発生した。

  • Noteはアカウントやインスタンスごとにより状態が異なるため識別する必要がある。
  • リモートのIdはインスタンス内では一意であるがアプリ内では複数インスタンスが混在するため一意ではない。

解決策

  • 案1:アカウントIdとリモートのIdを組み合わせた複合Id
  • 案2:従属するアカウントやインスタンスごとにストアを切り分ける

from milktea.

pantasystem avatar pantasystem commented on June 2, 2024

これによりアカウントごとにストアを管理することもなくまた利用者はアカウントを意識しなくて良くなった

from milktea.

Related Issues (20)

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.