@@ -806,8 +806,10 @@ function effectiveIsolate(filters: SpotFilters): "visit" | "plan" | null {
806806 * 保存済みの絞り込み条件を読む。未保存・不正値は既定(訪問順の経路=今日)を返す。
807807 * `visitedDate`は絞り込みではなく訪問順の経路の対象日で、既定は今日。「表示しない」は
808808 * 保存時に文字列`"none"`で書く(下記`saveFilters`)ため、`"none"`のときだけnull=表示
809- * しないにする。旧仕様の保存値(絞り込みだった頃のnull・日付、キー欠落)は「明示的な
810- * 表示しない」ではないので今日に倒す(既存ユーザーも初回から今日の経路が出る)。
809+ * しないにする。「今日」は`"today"`で保存されるので、読み込み時のその日の`todayKey()`に
810+ * 解決する(日付を固定しないので、翌日に開いてもその日が今日として選ばれる)。旧仕様の
811+ * 保存値(絞り込みだった頃のnull・日付、キー欠落)は「明示的な表示しない」ではないので
812+ * 今日に倒す(既存ユーザーも初回から今日の経路が出る)。
811813 */
812814function loadSavedFilters ( typeKey : string ) : SpotFilters {
813815 if ( typeof localStorage === "undefined" ) return defaultMapFilters ( ) ;
@@ -831,9 +833,14 @@ function loadSavedFilters(typeKey: string): SpotFilters {
831833 // 空(「すべて」チップがあった頃の保存値・キー欠落)は既定=未訪問のみに倒す
832834 // (現行UIに空選択の状態は無い。全件表示は両方選択で保存される)
833835 visited : visited . length > 0 ? visited : [ ...DEFAULT_FILTERS . visited ] ,
834- // "none"=表示しない、日付=その日、それ以外(旧null・キー欠落など)=今日
836+ // "none"=表示しない、"today"=(その日ではなく)常に今日、日付=その日、
837+ // それ以外(旧null・キー欠落など)=今日
835838 visitedDate :
836- obj . visitedDate === "none" ? null : date ( obj . visitedDate ) ?? todayKey ( ) ,
839+ obj . visitedDate === "none"
840+ ? null
841+ : obj . visitedDate === "today"
842+ ? todayKey ( )
843+ : date ( obj . visitedDate ) ?? todayKey ( ) ,
837844 // 訪問予定リストの経路対象(そのリストが今も存在するかは描画側で解決する)
838845 planListId : typeof obj . planListId === "string" ? obj . planListId : null ,
839846 // キー自体が無い保存データ(この設定の追加前に保存されたもの)は既定のオン扱い
@@ -849,9 +856,20 @@ function loadSavedFilters(typeKey: string): SpotFilters {
849856
850857function saveFilters ( typeKey : string , filters : SpotFilters ) {
851858 try {
852- // 「表示しない」(null)は旧仕様の「絞り込みなしのnull」と区別するため"none"で保存する
853- // (でないと既存ユーザーの旧nullも「表示しない」に見えてしまう。loadSavedFilters参照)
854- const stored = { ...filters , visitedDate : filters . visitedDate ?? "none" } ;
859+ // visitedDate の保存表現:
860+ // - null(表示しない) → "none"(旧仕様の「絞り込みなしのnull」と区別。loadSavedFilters参照)
861+ // - 今日(todayKey()と一致) → "today"(具体的な日付ではなく「今日」の意図で保存する。
862+ // でないと日付が固定され、翌日に前日が選ばれた状態で復元されてしまう。「今日」は
863+ // セレクトの選択肢として today のみで、others からは today を除いているため、
864+ // visitedDate が todayKey() と一致するのは「今日」を選んだときだけと判断できる)
865+ // - それ以外の具体的な日付 → その日付をそのまま保存
866+ const storedVisitedDate =
867+ filters . visitedDate == null
868+ ? "none"
869+ : filters . visitedDate === todayKey ( )
870+ ? "today"
871+ : filters . visitedDate ;
872+ const stored = { ...filters , visitedDate : storedVisitedDate } ;
855873 localStorage . setItem ( FILTERS_STORAGE_PREFIX + typeKey , JSON . stringify ( stored ) ) ;
856874 } catch {
857875 // プライベートブラウズ等で保存できなくても絞り込み自体は動かす
0 commit comments