Ayato-kosaka / spelieve

1 stars 0 forks source link

Preview に URL で飛ぶと、Edit に遷移できなくなる #884

Closed Ayato-kosaka closed 11 months ago

Ayato-kosaka commented 1 year ago

デグレ検知 Create Itinerary を2回行うと1回目が残っている

Ayato-kosaka commented 1 year ago

@Takapy1 ちょっと次の打ち合わせで相談させて欲しい、、

↓で整理しているけど、かなり根深そう。。 https://docs.google.com/spreadsheets/d/148SwXNGl5tc4HASBQrhUfb0t0FwoSpvR-10nULA8xhI/edit#gid=0

問題は、「しおり選択 → 新規作成」と「URLでPreview → Edit遷移」で同じ、下記初期値になること

そうすると、新規作成 で呼び出すべき itineraryCreate を呼び出す制御をするINPUTが無い。 ここを切り分けるには、下記2対策が考えられる。(※その他良い案があればそれを使いたい)

  1. route.params に isCreate を持たせる
  2. ItineraryEdit と ItineraryPreview で、route.params.itineraryID を共有する

1 は、難易度低いけど、パラメータ増えるから避けたい。 2 は、難易度が高そう。。

ちょっと要検討そう

Ayato-kosaka commented 1 year ago

案3 しおり選択からホーム画面に戻るとstate の itineraryID クリアする

navigation.onLeave(setItineraryID(null))

案4 createItinerary で、Stack ごと新しくする→つまり、Context が初期化される(そんなことできるのかは不明)

navigation.onEnter(setItineraryID(null))

案4が一番あるべきに近そう。 そうすると、以下の優先順で初期化できる

  1. Context の itineraryID
  2. Route の itineraryID
  3. CreateItinerary
Takapy1 commented 1 year ago

@Ayato-kosaka 時間とってちゃんと確認してから返信します!

Takapy1 commented 1 year ago

@Ayato-kosaka 内容理解にめちゃ苦戦してる! あしたのMtg までにもう少し俺もコード理解深めてみるけど  理解不十分だったらごめん!!!

Ayato-kosaka commented 1 year ago

@Takapy1 打ち合わせで説明するから大丈夫だよ!🙆

Ayato-kosaka commented 1 year ago

だめだ、、、 ItineraryPageNavigator 直下に Context があるから、案4 で ItineraryTopTabNavigator のStack新しくしてもState 持ったままだ、、 image

Ayato-kosaka commented 1 year ago

本来の画面遷移から考えると↓にならないといけないが、

↓になっているのがおかしい

Ayato-kosaka commented 1 year ago

対応内容 memo

Ayato-kosaka commented 11 months ago

課題

react navigation を使って EditPlan に遷移すると、ヘッダが 3つ出る。 あまりに大きいのと、Edit Plan からの遷移は ItineraryEdit だけで良い。 理想はモーダル化して、ItineraryEdit に選択した Place を渡したい。 ただ、Edit Plan は Plan を update する処理が入っているので、Context の管理下かから外れることが出来ない。 つまり、Context の階層関係と、 react navigation の階層関係で合わない。

Context の階層関係

react navigation の階層関係

じゃあどうするべきか、と考えると

Ayato-kosaka commented 11 months ago

nacigation events を使って無理やりモーダルみたいにしてみる

react navigation で親の screen options を setOptions するにはどうするか

Ayato-kosaka commented 11 months ago

ちょっと考えてみたけど、Context 指向じゃないと無理そうだから無理やり非推奨の実装する。 今の所困りそうにないけど、後々困ったらまた考える。

Ayato-kosaka commented 11 months ago

一回 react navigation のドキュメント全部読もうかな、、 そうしないとイマイチ動きがわからんなぁ、、

Ayato-kosaka commented 11 months ago
Ayato-kosaka commented 11 months ago

react navigation のドキュメントは完全にネストは最小限にすべきで、レイアウト指向でネストを決定すべきって書いてるなぁ、、 じゃあ、Context の考え方を再整理したほうが良いのかなぁ、

Ayato-kosaka commented 11 months ago

方針としては、

Ayato-kosaka commented 11 months ago

↑を対応するとなると EditPlan の実装が大まかにか分かるからかなりの実装修正が必要になる。。 対応すべきか? → 今後のデータコンセプトの修正で必要なくなるかもだけど、まずは当たり前品質改善 -> インスタ だから対応する

Ayato-kosaka commented 11 months ago

UT でバグ検知。 PlanEdit 画面で Representative Plan の開始時間を変更しても、 ItineraryEdit 画面に戻ると反映されていない。

起因 ①PlanEdit 画面で開始時間を変更 → DB の PlanGroup を更新 ②上記を ItineraryEdit 画面で検知して useEffect が発射し、DB の plan の startTime が更新 ③戻るボタン押下時にDB の plan をPlanEdit 画面の画面保持情報で上書きするため、元の値で上書きされる。

原因 ItineraryEdit 画面 はリアルタイムに DB をウォッチし、DB を直接更新する仕組み。 PlanEdit 画面は、画面情報を保持しておき、RemovePage で一括DB更新する仕組み。

なのに、起因①のように、PlanGroup だけその場で更新しているため障害となる。

対策 PlanGroup も画面で情報を保持しておき、画面離脱時に更新するようにする。

Ayato-kosaka commented 11 months ago

UT でバグ検知。 Plan のサムネイル画像作成後、 ItineraryEdit に戻り、再度 PlanEdit に入ると場所の画像に更新される。

原因 plan.imageUrl 更新処理の設計不備。 place.imageUrl を監視して更新している。

解決策 place.place_id を監視し、place が plan が持っているものから更新された場合、 title, imageUrl を更新する