Recursion-Group-K / sketch

https://sketch-frontend-d11d98fe289b.herokuapp.com/
0 stars 0 forks source link

Feat/drawing/etch a sketch/save load #69

Closed sokahiri closed 2 years ago

sokahiri commented 2 years ago

やったこと

説明

save,loadの実装に伴って、一度saveしたラインを再度redoさせないために、saveしたラインは別のリストに保管する仕様にしました。loadではこれを読み取っています。 また、キャンバスから離れる直前に保存していない変更があればセーブの確認を行うようにし、saveボタンを押したらセーブするようにしました。 キャンバスページへ戻ってきた際にセーブした内容はロードされます。また、一時的にxキーを押すことによってもロードを試すことができます。(後々削除予定)

やり残し、改善点

レビューしてほしい箇所

挙動テストをお願いします。 余裕があればコードレビューもお願いしたいです。

質問

やり残しの部分につきまして、取り組むべき優先度について意見をお伺いしたいです。

mcnLeandro commented 2 years ago

ごめんなさい! 仕様に関して修正してほしい点がありました!

save,loadの実装に伴って、一度saveしたラインを再度redoさせないために、saveしたラインは別のリストに保管する仕様にしました。loadではこれを読み取っています。 また、キャンバスから離れる直前に保存していない変更があればセーブの確認を行うようにし、saveボタンを押したらセーブするようにしました。

今回の仕様は save => itemListを丸ごとjson.stringifyしてlocalstorageに保存する load => localstorageからロード& itemStackを空にする

これでredoは防げるはずです!見落としがあったら言ってください!

sokahiri commented 2 years ago

今回の仕様は save => itemListを丸ごとjson.stringifyしてlocalstorageに保存する load => localstorageからロード& itemStackを空にする

これでredoは防げるはずです!見落としがあったら言ってください!

ごめんなさい。redoだけじゃなくundoも防ぎたいです!書き忘れてました。。 同じitemListにsave後のラインと未saveのラインを混ぜて管理していると、一見外からそれらを見分ける手段がないと思ったので、物理的にリストを分けました。 工夫すれば同じリストでも管理できるとも思いましたが、save後のラインに手を加えられないようにすることを考えると、物理的に分けてしまうのが一番早いかなと思ったので、このようにしました。

mcnLeandro commented 2 years ago

なるほど! ちなみにundoを防ぎたい理由などはあったりしますか?

sokahiri commented 2 years ago

セーブした内容はundoできないという謎の思い込みがあったのですが、今確認するとVScodeとかは別にそうなってないですね。。redoもできますし ここは仕様から見直す必要がありますね。。VScodeを参考にして、 「一度セーブした内容もredoやundo等の操作が可能で、ロード時にredoはできなくなる」という仕様で再実装してみようと思いますが、この内容に違和感ないでしょうか?

sokahiri commented 2 years ago

上記の仕様を実装しようとすると、Leandroさんが最初に提案されていました方法での実装になりそうですね!

mcnLeandro commented 2 years ago

@sokahiri そちらの仕様で問題ないと思います! ありがとうございます!🙏🙏

sokahiri commented 2 years ago

一度セーブした内容もredoやundo等の操作が可能で、ロード時にredoはできなくなる

仕様をこのように変更して再度pushしました!

mcnLeandro commented 2 years ago

セーブが完了したかどうかのModalはまた別のissueにしようと思うので一旦マージしちゃいますね!