(function(d){let REGEXP_OPEN2CHREADCGI=new RegExp(/http:\/\/.*\.open2ch\.net\/test\/read\.cgi\/.*/);if(!REGEXP_OPEN2CHREADCGI.test(location.href)){console.warn("available only under http://*.open2ch.net/test/read.cgi/*");return}let appName='ignoreManager';let _ignores=ignores;_init();function _init(){_embedHTML();_assignEventListener()}function _embedHTML(){_embedBackgroundElm();_embedMainElm();_setIgnores()}function _assignEventListener(){AddBtnEventListener();DeleteAllBtnEventListener();DeleteWithoutTwitterBtnEventListener();DeleteSelectedBtnEventListener();CloseIgnoreManager()}function _embedBackgroundElm(){let bg=d.createElement('div');bg.id=`${appName}_bg`;bg.style=`\n background:black;\n position:fixed;\n top:0;\n left:0;\n width:100%;\n height:100%;\n opacity:0.5;\n z-index:30;\n `;d.body.appendChild(bg)}function _embedMainElm(){let main=d.createElement('div');main.id=`${appName}_main`;main.style=`\n background:#EFEFEF;\n position:fixed;\n top:30px;\n left:30px;\n width:calc(100% - 80px);\n height:calc(100% - 80px);\n z-index:31;\n border:solid black 1px;\n padding:10px;\n `;main.innerHTML=`\n
無視id編集画面
\n
\n \n 無視id ↓
\n
\n \n
\n
\n \n \n `;d.body.appendChild(main)}function _setIgnores(){let keys=Object.keys(_ignores);let arr=[];let id;for(key of keys){[id,key]=_transformID(key);arr.push(``)}let div=d.querySelector('#ignoresView');div.innerHTML=arr.join('')}function _transformID(key){let id;if(key.length>3&&key.startsWith('tw@')){id=key;key.replace(/^tw@/,'tw');return[id,key]}if(key.length>3&&key.startsWith('tw')){id=key.replace(/^tw/,'tw@');return[id,key]}if(key.length>3&&key.startsWith('@')){id=key.replace(/^@/,'tw@');key=key.replace(/^@/,'tw');return[id,key]}id=key;return[id,key]}function _addIgnore(key){let elm=d.createElement('label');elm.style='display:block';id=key;id=id.length>3&&id.startsWith('tw')?id.replace(/^tw/,'tw@'):id;elm.innerHTML=`${id}`;let div=d.querySelector('#ignoresView');div.appendChild(elm)}function _validateID(id){return new Promise(((resolve,reject)=>{if(id.length<3){reject()}if(/[^A-Za-z0-9@_]/.test(id)){reject()}if(id.includes('@')&&id.match(/@/g).length>1){reject()}if(id.length===3){if(id.includes('@')||id.includes('_')){reject()}resolve(id)}if(id.length>3){if(id.includes('@')){if(id.startsWith('tw@')){id=id.replace(/^tw@/,'tw');resolve(id)}else if(id.startsWith('@')){id=id.replace(/@/,'tw');resolve(id)}else{reject()}}else{id='tw'+id;resolve(id)}}}))}function _deleteAll(){delStorage(cachekey);_ignores=new Object;ignores=_ignores;return}function _deleteAllFromView(){let div=d.querySelector('#ignoresView');while(div.firstChild){div.removeChild(div.firstChild)}}function _deleteWithoutTwitter(){let keys=Object.keys(_ignores);for(let key of keys){if(key.length===3){delete _ignores[key]}}setStorage(cachekey,JSON.stringify(_ignores));ignores=_ignores}function _deleteWithoutTwitterFromView(){let div=d.querySelector('#ignoresView');let elms=div.querySelectorAll('input[type="checkbox"]');for(let elm of elms){if(elm.value.length===3){div.removeChild(elm.parentElement)}}}function _deleteSelected(){let div=d.querySelector('#ignoresView');let elms=div.querySelectorAll('input[type="checkbox"]');let obj={};for(let elm of elms){obj[elm.value]=1}_ignores=obj;ignores=_ignores;setStorage(cachekey,JSON.stringify(ignores));return}function _deleteSelectedFromView(){let div=d.querySelector('#ignoresView');let elms=div.querySelectorAll('input[type="checkbox"]:checked');for(let elm of elms){div.removeChild(elm.parentElement)}return}function AddBtnEventListener(){let elm=d.querySelector('#b_add');elm.addEventListener('click',(function(ev){ev.preventDefault();let id=d.querySelector('#t_input').value;id=id.trim();_validateID(id).then((key=>{_ignores[key]=1;_addIgnore(key);setStorage(cachekey,JSON.stringify(_ignores));updateIgnore();console.dir(_ignores)}),(()=>{alert(`${id}はidっぽくないみたい。。`)}))}))}function DeleteAllBtnEventListener(){let elm=d.querySelector('#b_deleteAll');elm.addEventListener('click',(function(ev){ev.preventDefault();if(confirm('消しますか?')){_deleteAll();_deleteAllFromView()}}))}function DeleteWithoutTwitterBtnEventListener(){let elm=d.querySelector('#b_deleteWithoutTwitter');elm.addEventListener('click',(function(ev){ev.preventDefault();if(confirm('消しますか?')){_deleteWithoutTwitter();_deleteWithoutTwitterFromView()}}))}function DeleteSelectedBtnEventListener(){let elm=d.querySelector('#b_deleteSelected');elm.addEventListener('click',(function(ev){ev.preventDefault();if(confirm('消しますか?')){_deleteSelectedFromView();_deleteSelected()}}))}function CloseIgnoreManager(){let elm=document.querySelector('#ignoreManager_bg');elm.addEventListener('click',(function(ev){if(confirm('閉じますか?')){let main=d.querySelector(`#${appName}_main`);let bg=d.querySelector(`#${appName}_bg`);d.body.removeChild(main);d.body.removeChild(bg)}}))}return})(document);