購読履歴
「ワークショップ」グループの 4 つ目のサブページ 購読 は、すべての購読(ダウンロードインストール)タスクのバックグラウンドタスク管理センターです。上部には「進行中 N · 完了 N · 失敗 N」がリアルタイムに集計表示されます。
タスクの状態
各購読タスクには状態バッジが付き、完全なライフサイクルをカバーします:
待機中 → ダウンロード中 → 解凍中 → 記録中 → 完了
および 3 種類の終端状態:購読解除済み / 失敗 / キャンセル済み。
リアルタイムの進捗
- 進捗バー + ダウンロード速度がリアルタイムに更新。Mod 詳細ページと同一のイベントソースを共有し、2 か所の表示は互いに干渉しません;
- ダウンロード、解凍、ハッシュ検証、DB への書き込みはすべて Rust 側で実行され、フロントエンドのページライフサイクルから完全に分離されています —— ページを閉じてもタスクは通常どおり完了します;
- 進行中のタスクはいつでもキャンセルでき、中途半端なインストーラは一緒に削除されます;
- 失敗したタスクはローカライズされたエラーメッセージを表示し、原因調査を容易にします。
タスク詳細
各タスクには、言語ファイル名(翻訳名を優先表示)、バージョン、言語、カテゴリ、mod_key、2 行で省略される概要が表示されます。
ページをまたいだジャンプ
完了した(またはインストール済みの)タスクには 2 つのクイックエントリがあります:
- ワークショップで詳細を見る —— クラウドの Mod 詳細ページへジャンプ;
- ローカル Mod で表示 —— カテゴリに応じて自動的にローカル Modの対応サブページへマッピングし、mod_key を付けて対象カードを特定してハイライトします。
スマートな重複除去と状態修正
- インストールの重複除去 —— 同じ Mod がインストール済みの状態で再度購読した場合は、ダウンロードをスキップし、重複タスクを回避;
- 「購読解除済み」の仮想状態 —— 完了したタスクはローカルのインストール記録を照会し、記録が既に存在しない場合は「購読解除済み」と表示します(DB には書き戻しません)。再購読時の重複除去ロジックと呼応しています;
- 表示層での重複除去 —— 同じ Mod + バージョン + 言語の重複する過去記録は最新の 1 件のみを保持し、リストを常にクリーンに保ちます。