遠征帰投ポップアップについて

142 views
Skip to first unread message

humohum...@gmail.com

unread,
Sep 27, 2018, 2:33:31 AM9/27/18
to 艦これウィジェット
ドックにて入渠完了と同時に遠征完了のポップアップが出てきてしまいます。
通常入渠でも高速修復材でも同じでした。
入渠完了のポップアップが遠征帰投の表示となっているだけでしょうかね?

なお遠征帰投時には通常通り遠征帰投のポップアップが出ています。

あと余裕があればポップアップの何処をクリックしても消えるように変更できないでしょうか?
今の所右上のバツボタンを押さなければならないので。
s.2018-09-27 (4).png

nachu k

unread,
Sep 28, 2018, 8:32:43 AM9/28/18
to 艦これウィジェット
建造完了時も同様に、undefined艦隊がundefinedより帰投するポップアップが出るようです。
(別ツールとの併せてのスクショで恐縮ですが遠征から帰ってきてないことの証明として)

また、こちらのポップアップですが、遠征帰投後に閉じずに放っておくと
いくつもポップアップが重なってしまい閉じるのが非常に大変です。
(ex:第二艦隊が帰投→第二艦隊をまた遠征に出す→第二艦隊が帰投→ポップアップが二重に重なる)

一定時間(10秒位?)立つと自動的にポップアップが閉じるようになると良いかなと思います。


2018年9月27日木曜日 15時33分31秒 UTC+9 humohum...@gmail.com:
download.png

Hiromu OCHIAI

unread,
Sep 29, 2018, 7:28:27 AM9/29/18
to 艦これウィジェット
とりあえず建造完了時ですが、再現はしなかったです。

一度拡張削除か、あるいは、 `localStorage.clear()` してみてほしいかも。

nachu k

unread,
Sep 29, 2018, 8:38:13 AM9/29/18
to 艦これウィジェット
拡張削除とローカルストレージクリアしてみたのですが、再現しました。なんでだろう…
デベロッパーツールのウィンドウを開いて、バケツ使い終わったところを撮影したので送付します。

Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 
表示サイズ: 1536 x 735pix

2018年9月29日土曜日 20時28分27秒 UTC+9 Hiromu OCHIAI:
建造完了後ポップアップが出る.png

Hiromu OCHIAI

unread,
Sep 29, 2018, 9:38:43 AM9/29/18
to 艦これウィジェット
今んとこ観測されるのはWindowsだけってことですかね、もしかして。

Akira ISIGE

unread,
Sep 29, 2018, 11:03:40 AM9/29/18
to 艦これウィジェット
うちの Windows 環境でも同様の状況が起きていますね.v2 と併用の環境です.

テスト実装なので機能していない通知がそのままなのかなーとか思ってたんですが,mac では起きていない現象だとすると誰かの不具合なのかもしれませんね.
明日にでも Windows で状況を確認してみようかと思います.

それはそれとして,「出たまま消えない通知」はわりと UX を阻害するので,勝手に消える or そもそも出さない設定を出来るようにしたいですねー.

wifeofvillon

unread,
Sep 29, 2018, 5:43:33 PM9/29/18
to 艦これウィジェット
Macで高速建造しか試してませんが出ます。並存時のバグかと思って組み合わせを試しました

  • v3-24 x v3-23 x v2 :出る
  • v3-24 x v2 :出る
  • v3-24 :出る

この間v3のwindowとbackground、v2のbackgroundのconsoleを見ていましたが(見落としてるかもしれませんが)エラーは確認できませんでした

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 
表示サイズ: 1564 x 897pix
スクリーンショット 2018-09-30 6.34.30.png

Akira ISIGE

unread,
Oct 1, 2018, 8:08:56 AM10/1/18
to 艦これウィジェット
イベント完了したのでこれをどうにかしたくて見てたんですが,
ストアから入れた v3-24 とローカルで NODE_ENV=development でビルドした v3/develop ブランチ最新コードとで,
高速建造した時の状態が違いますね……

ストアの方だとこう

ローカルビルドだとこう

development だからかどうかとかがとても判別しづらいですがコレどこ見るのが良いですかね……?

とりあえずこの通知があまりにも邪魔なのでクリックで消せるようにしたかったんですが,
この "Mission" の文字列リテラルがどこから発されるものなのか追えなくて諦めました.

暫定的に「とにかく通知を出さない設定」を作ろうかと思ったんですが,やるとしたら
このCategoryに "Notification" とか追加していく感じですかね……?


Hiromu OCHIAI

unread,
Oct 1, 2018, 10:39:08 PM10/1/18
to 艦これウィジェット
  1. 意図しないqueueが入ってる問題は、ここを見るのが1番良いと思います。(まずおそらく)この `finished` にゴミが入ってるということなので。
    1. https://github.com/otiai10/kanColleWidget/blob/v3/develop/src/js/Applications/Background/Cron/index.ts#L9-L14
  2. プロパティがundefinedなりnullなりのものを、対症療法的に除外するなら、ここでfilterなんかを噛ませるのがよいと思いますが、根本的なbugfixではないですね...
    1. https://github.com/otiai10/kanColleWidget/blob/v3/develop/src/js/Applications/Background/Cron/index.ts#L18
  3. "Mission"文字列が渡されるのはこの "_ns" です。これはchomexが、クラス名から勝手に生成するlocalStorage上のネームスペースとして扱われるものです
    1. https://github.com/otiai10/kanColleWidget/blob/v3/develop/src/js/Applications/Background/Cron/index.ts#L20
なかなかコミットできず申し訳ないです。イベントも進んでないし...
いつもありがとうございます。


Akira ISIGE

unread,
Oct 2, 2018, 3:39:20 AM10/2/18
to 艦これウィジェット
  1. "Mission"文字列が渡されるのはこの "_ns" です。これはchomexが、クラス名から勝手に生成するlocalStorage上のネームスペースとして扱われるものです

あーなるほどクラス名ですか.chomex さん便利だけど微妙に黒魔術っぽさありますね……w

ただいま NODE_ENV=production でビルドしたもので試したらストア版と同じ遠征undefined通知が出るようになりました.なんでそこで変わんねん.
てことでもうちっと調べてみますー.

Hiromu OCHIAI

unread,
Oct 2, 2018, 3:55:34 AM10/2/18
to 艦これウィジェット
chomexというよりは、本来アプリケーションから使うことが想定されていない "_ns" を使っているのがよくないですね。厳密に言えば、v2みたいに、queueにnotificationIDみたいなメソッドを生やすべきだとは思います。

ま、枝葉末節なのでのちのち。

Akira ISIGE

unread,
Oct 2, 2018, 6:59:25 AM10/2/18
to 艦これウィジェット
謎ポップアップは「建造 or 入渠」の API コール時に api_highspeed=1 の時に tmp.dock = null した後,
実処理で早期 return していないため色々と内容が空の Queue が register() されてるのが原因っぽいです.
この場合の早期 return は { status: 200 } を返すというコードの想定であってますかね?

ひとまずこれとあと通知クリックで消去するやつをプルリクしました.

Hiromu OCHIAI

unread,
Oct 2, 2018, 12:05:43 PM10/2/18
to 艦これウィジェット
プルリクありがとうございます。
 
謎ポップアップは「建造 or 入渠」の API コール時に api_highspeed=1 の時に tmp.dock = null した後,実処理で早期 return していないため色々と内容が空の Queue が register() されてるのが原因っぽいです.

たしかに、建造 or 入渠時に、undefinedとして建造・入渠のqueueが登録され、即時ポップアップが出る問題はそのとおりなんですが、 当初の「入渠完了時に、遠征ID undefined の通知が出る」はいまだに謎ですね。

Akira ISIGE

unread,
Oct 3, 2018, 12:00:57 AM10/3/18
to 艦これウィジェット
当初の「入渠完了時に、遠征ID undefined の通知が出る」はいまだに謎ですね。

これなんですが,挙動を追ってみたところ,以下のような流れっぽいです.

dock == null の時に色々と空な Queue を登録すると,その Queue は chomex の中で何故か,(T extends Queue).scan() を誰がやっても引っかかるようになるようです.
で,Cron で Mission.scan() を最初にやっているために,Recovery.register() した Queue を Mission が拾うことになり,「空の遠征完了通知が出る」という挙動になっています.
試しに Cron で scan() の順序を変えて先頭を Recovery にしたところ,「空の入渠完了通知が出る」という挙動になりました.

というわけで根本原因は「色々と空の Queue を scan() が拾ってしまう」もしくは「そういう Queue を登録できてしまう」,あるいは仕様次第では「空の Queue を登録してしまっている」であろうと思われます.最後の問題点は先のプルリクで暫定的に解決していると思います.

Hiromu OCHIAI

unread,
Oct 4, 2018, 2:49:11 AM10/4/18
to 艦これウィジェット
ありがとうございます。

もしchomexのバグならぜひ調査したいんですけど、僕の手元で再現しないんですよね...
とりあえず現象がなくなったということで、ありがとうございます。

Akira ISIGE

unread,
Oct 6, 2018, 11:38:54 PM10/6/18
to 艦これウィジェット
この謎ポップアップの件,development と production で挙動が異なる原因を調べていたんですが……

# Chrome拡張だとIDEからステップ実行もできないし production だと sourcemap もないし,
# chomex 内部だと console.log() もなぜか効かないしで,ホントつらみ……w

chomex.Model.constructor() で this._ns = ns || this.constructor.name としてクラス名を取得している箇所が,
production ビルドだと uglify により自動的に e とかそういう名前になってしまっていて,
これが原因なような気がしています.

で,おそらくそれが原因だろうと思いますが,
ここで missions, recoveries, shipbuildings 全てに同じ結果が入っています.
console.log("upcoming");
console.table({
  missions: missions.upcomming,
  recoveries: recoveries.upcomming,
  shipbuildings: shipbuildings.upcomming,
});




通知クリックで消去も Router が e で知らせてくるので production では反応できなかったようで,
router.on("e", async (id) => {
const ns = new NotificationService();
await ns.clear(id);
});

これを試しに NotificationClick に追加してみたところ期待通りクリック消去されました.まぁこの対処はナイw


なお,この状況なのに正常に登録された入渠や遠征の通知が正常に出るのは何故かと思ったんですが,
「finished に入ってくるオブジェクトは実行時点では既に自分が Missions だとかのクラス名を忘れているが,
オブジェクトが保持している notificationOptions() メソッドは維持しているので,
通知オプションは期待通りに設定される」
という状況であるようです.



Hiromu OCHIAI

unread,
Oct 6, 2018, 11:55:26 PM10/6/18
to 艦これウィジェット
なるほど。ありがとうございます。productionビルドすれば再現するはず、ってことですよね。


2018年10月7日日曜日 12時38分54秒 UTC+9 Akira ISIGE:

Akira ISIGE

unread,
Oct 7, 2018, 12:03:36 AM10/7/18
to 艦これウィジェット
はい.

NODE_ENV=production でビルドして遠征or入渠or建造をすると,
upcoming に _ns="e" の Model が入ってくるのが確認出来ると思います.

さらに,先日入れていただいた Shipbuilding の早期 return
をコメントアウトして ,バーナーを使って即時建造をすると,
_ns="e" に基づいて notificationClick の Router が "e" でルーティングしてくるポップアップをすぐに出せると思います.

Hiromu OCHIAI

unread,
Oct 7, 2018, 1:58:27 AM10/7/18
to 艦これウィジェット
一応、雑にmangleしないようにしました
https://github.com/otiai10/kanColleWidget/commit/814e166225ff9d8ee4c1d10b2f42d8749e378261

2018年10月7日日曜日 13時03分36秒 UTC+9 Akira ISIGE:

Hiromu OCHIAI

unread,
Oct 9, 2018, 1:52:32 AM10/9/18
to 艦これウィジェット
alpha.28で直ってるとうれしいなと思ってます

Akira ISIGE

unread,
Oct 9, 2018, 6:29:10 AM10/9/18
to 艦これウィジェット
ありがとうございます.自分の環境では,alpha28 で今のところおかしな挙動もなく見た目の通りに動いています.

v2 と併用なので遠征帰還通知が二重に出るんですが,v3 は1分前通知になっていないので違和感ありますねw
今のところ終了通知もクリックでただ消えるだけなので,開始通知と同様に自動的に消える設定でもいいかも……?

Hiromu OCHIAI

unread,
Oct 10, 2018, 1:43:28 AM10/10/18
to 艦これウィジェット
1分前って、遠征だけでしたっけ。

あと、通知の設定はそろそろやんなきゃなあ、って思います。
完全に失念していてイベント完走できなかったです。

Akira ISIGE

unread,
Oct 10, 2018, 6:49:39 AM10/10/18
to 艦これウィジェット
遠征と入渠は1分前に通知が出てからそれぞれの画面に行けば完了しますね.

建造は……画面に行くだけではダメだったはずで,たしか「完了1分以内の建造がある時に他のスロットで建造完了するor新規建造開始する」で前倒し完了という挙動だったはずなので,狙ってやるのは難しいので建造は1分前通知じゃなくてもいいんじゃないかなーと思います.

(間違ってたら誰かツッコミください
Reply all
Reply to author
Forward
0 new messages