Skip to content

ディープリンク sids 形式で dir パラメータを廃止する #6006

Description

@TinyKitten

背景

#6002 で追加された sids ベースのディープリンク (?sids=A,B,C,...&dir=0) では、ユーザーが駅 ID を出発駅→目的駅の順に並べることでそのまま意図を表現する。

このとき dir パラメータは:

  • dir=0 (INBOUND): selectedBound = sids[sids.length - 1] = 最後尾の駅 = ユーザーが並べた目的地
  • dir=1 (OUTBOUND): selectedBound = sids[0] = 先頭の駅 = 出発駅

となるが、sids ベースでは「ユーザーが並べた最後の駅 = 目的地」が定義そのものであり、dir=0 は並び順から完全に冗長になる。逆方向のリンクを共有したい場合は sids を逆順に並べれば済むため、dir=1 を許す意味も乏しい。

現状の挙動

PR #6003 (実装済み) では:

  • dir 省略時は dir=0 として扱う (= INBOUND)
  • dir=0 / dir=1 のいずれも受け付ける
  • dir=2 等の不正値はリンク全体を no-op

つまり実質的に dir を渡しても渡さなくても同じになるケースが大半で、URL が長くなるだけ。

提案

sids ベースのリンクでは dir パラメータを無視する。 常に「先頭の駅 = 出発駅、末尾の駅 = 目的地」(INBOUND 相当) として扱う。

handleUrl の挙動

  1. sids が存在する場合、sgid / lid / lgid / dir をすべて無視する
  2. sids の解釈とバリデーションは ディープリンクで他路線直通・経路全体を表現できるようにする #6002 の仕様通り
  3. selectedDirection は常に INBOUNDselectedBound は常に stations[stations.length - 1] 固定

受信側のリンク例

TrainLCD://route?sids=1131211,1131310,2800217,2800218

dir を省略するのが正式仕様となり、dir=0 / dir=1 が渡されても受信側で無視する。

後方互換性

受け入れ条件

  • ?sids=A,B,C,... 形式 (dir 無し) のリンクで、末尾駅が selectedBound になる
  • ?sids=A,B,C,...&dir=0 / &dir=1 / &dir=任意の値 のいずれも、dir 無しと同じ結果になる
  • 既存形式 (sgid/lid/dir) のリンクは動作変化なし
  • 単体テストで dir 無視を検証する

関連

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions