postalkのタイムライン表示状態を維持するUserScript
動機
タイムラインを非表示にしていても、他のボードを表示すると再びタイムラインが表示される。
一人で使っている時はタイムライン表示を非表示にしておきたい。
postalkの動作が変わり、デフォルトではタイムラインを表示しなくなった。 at 2023/06/08(木)
タイムライン表示状態の維持はされないので、機能としては残しておく。
postalkを複数ボードを同時平行で使っている場合、ボード毎にタイムライン表示状態を別々に扱いたい。
使い方
UserScriptをインストールする。
postalkのページをリロードする。
以後、タイムラインを表示したボードを再表示すると以前と同様にタイムラインを表示する。
最大10枚のボードに対してタイムライン表示状態を記憶する。
更新履歴
2023/05/27(土) 0.0.1 新規作成。
2023/06/08(木) 0.0.2 postalkがデフォルトではタイムラインを表示しなくなったのでコードを変更した。
2023/06/08(木) 0.0.3 タイムラインの表示状態をボード別に維持できるようにした。最大10件まで。
実装
code:js
// ==UserScript==
// @name postalk-timeline
// @description It is possible to keep the display of the timeline.
// @version 0.0.3
// @author foldrr
// @grant GM.setValue
// @grant GM.getValue
// ==/UserScript==
/* eslint-disable no-multi-spaces */
(async function() {
'use strict';
let KEY = 'visibles';
let MAX_BOARDS = 10;
let logButtonObserver = null;
var visibles = [];
document.arrive('.logButton', async el => {
let logButton = el;
let visibles = await GM.getValue(KEY) || [];
if (visibles.includes(location.pathname)) {
logButton.click();
}
logButtonObserver = new MutationObserver(records => {
let visible = logButton.className == 'logButton isOpen';
if (visible) {
visibles.unshift(location.pathname);
visibles = visibles.slice(0, MAX_BOARDS);
GM.setValue(KEY, visibles);
}
else {
if (visibles.includes(location.pathname)) {
visibles = visibles.filter(x => x != location.pathname)
GM.setValue(KEY, visibles);
}
}
});
logButtonObserver.observe(logButton, {
childList: true,
attributes: true,
})
});
})();