// ==UserScript==
// @name SBM
// @name:ko SBM
// @version 0.3
// @description 스팀 프로필 차단 또는 메모에 대한 추가 기능을 제공합니다.
// @author degall_udong
// @namespace unknown
// @include *steamcommunity.com*
// ==/UserScript==
if (document.querySelector("[name='abuseID']") != null){
var prof_num = document.querySelector("[name='abuseID']").value;
var MMDATA = localStorage.getItem(prof_num);
}
function memo_export_Chrome () {
var new_exportText = document.createTextNode('메모 데이터 내보내기');
var new_importText = document.createTextNode('메모 데이터 가져오기');
var tagloc = document.querySelector("[class='profile_friends title_bar']");
var modf_style = document.querySelector("[class='profile_friends title']");
var export_btn = document.createElement('button');
var import_btn = document.createElement('button');
var span_1 = document.createElement('span');
var span_2 = document.createElement('span');
export_btn.setAttribute("id","memo_data_export");
export_btn.setAttribute("class","profile_friends manage_link btnv6_blue_hoverfade btn_small btn_uppercase");
import_btn.setAttribute("id","memo_data_import");
import_btn.setAttribute("class","profile_friends manage_link btnv6_blue_hoverfade btn_small btn_uppercase");
export_btn.onclick = export_exc
import_btn.onclick = import_exc
span_1.appendChild(new_exportText);
span_2.appendChild(new_importText);
export_btn.appendChild(span_1);
import_btn.appendChild(span_2);
modf_style.style.minWidth = "100px";
tagloc.insertBefore(export_btn, document.querySelector("[id='manage_friends_control']"))
tagloc.insertBefore(import_btn, document.querySelector("[id='manage_friends_control']"))
}
function import_exc(){
ShowConfirmDialog(
'메모 덮어쓰기',
'기존 메모 데이터가 존재할 경우 어떻게 하시겠습니까? 중복된 메모 아이템에 기존 데이터를 유지할 수 있고 덮어쓸 수 있습니다.',
'덮어쓰기',
null,
'데이터 유지').done( function(over) {
var key;
var re = /\D/;
function processFile(file) {
var reader = new FileReader();
reader.onload = function () {
exc(JSON.parse(reader.result));
};
reader.readAsText(file);
}
var input = document.createElement("input");
input.type = "file";
input.accept = "application/json"; // 확장자가 xxx, yyy 일때, ".xxx, .yyy"
input.onchange = function (event) {
processFile(event.target.files[0]);
};
input.click();
function exc(json_string){
if (over == 'OK'){
// = > Y
//기존에 있던 정보들을 덮어 씀. 충돌되지 않는 데이터에는 영향이 없음.
for(key in json_string) {
if ( re.test(key)!= true ){
localStorage.setItem(key,json_string[key]);
}
}
}
else{
// = > N
//기존에 있는 정보는 건드리지 않음
for(key in json_string) {
if (re.test(key) != true){
if(localStorage.getItem(key) == null){
localStorage.setItem(key,json_string[key]);
}
}
}
}
}
});
}
function Mod_dialog(){
var dialog_p = document.querySelector("[class='newmodal_content']>div");
var msg = dialog_p.innerHTML;
dialog_p.innerHTML = msg + "<br> 이 실행은 유저스크립트와 관계 없이 스팀 대화 및 댓글에 대한 작업을 의미합니다. <br> 유저스크립트 내의 작업은 이미 진행되었습니다.";
}
function Red(){
var sp_mth_l = document.querySelector("[class='profile_header_summary']");
var new_ele = document.createElement( 'div' );
var memo_ele = document.createElement( 'a' );
var new_eleText = document.createTextNode( '해당 사용자는 차단메모된 사용자입니다.');
var memo = MMDATA.split(':')[1];
var memo_eleText = document.createTextNode(memo);
new_ele.setAttribute("id","bldisplayusjs_id");
new_ele.setAttribute("class","bldisplayusjs_class");
new_ele.style.color="#FF0000";
new_ele.style.fontSize="15px";
memo_ele.setAttribute("id","memousjs_id");
memo_ele.setAttribute("class","memousjs_class");
memo_ele.style.color="#FF0000";
memo_ele.style.fontSize="13px";
new_ele.appendChild(new_eleText);
memo_ele.appendChild(memo_eleText);
sp_mth_l.insertBefore(new_ele,document.querySelector("[class='profile_summary_footer']"));
sp_mth_l.insertBefore(memo_ele,document.querySelector("[class='profile_summary_footer']"));
}
function export_exc() {
ShowConfirmDialog("메모 데이터 내보내기", "메모 데이터를 내보냅니다.")
.done( function () {
var content = JSON.stringify(localStorage);
var blob = new Blob([content], { type: 'application/json' });
var objURL__ = window.URL.createObjectURL(blob);
if (window.__Xr_objURL_forCreatingFile__) {
window.URL.revokeObjectURL(window.__Xr_objURL_forCreatingFile__);
}
window.__Xr_objURL_forCreatingFile__ = objURL__;
var a = document.createElement('a');
a.download = "MemoData";
a.href = objURL__;
a.click();
});
}
function Blue(){
var sp_mth_l = document.querySelector("[class='profile_header_summary']");
var memo_ele = document.createElement( 'a' );
var memo = MMDATA.split(':')[1];
var memo_eleText = document.createTextNode(memo);
memo_ele.setAttribute("id","memousjs_id");
memo_ele.setAttribute("class","memousjs_class");
memo_ele.style.color="#0000ff";
memo_ele.style.fontSize="13px";
memo_ele.appendChild(memo_eleText);
sp_mth_l.insertBefore(memo_ele,document.querySelector("[class='profile_summary_footer']"));
}
function register(){
ShowConfirmDialog( '차단 메모', "정말로?")
.done( function() {
ShowPromptDialog("\ucc28\ub2e8 \uba54\ubaa8\ud558\uae30", "\uba54\ubaa8\ud560 \ucc28\ub2e8 \uc0ac\uc720\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694.","\uc800\uc7a5\ud558\uae30", "\ucde8\uc18c")
.done( function (memo, other){
if (memo != null){
localStorage.setItem(prof_num,"2:" + memo);
javascript:ConfirmBlock();
Mod_dialog();
}
}
);
}
);
}
function unregister(){
ShowConfirmDialog( '차단 메모 해제', '차단 메모 기록을 삭제하고, 차단을 해제합니다.' )
.done( function() {
localStorage.setItem(prof_num,null);
javascript:ConfirmUnblock();
Mod_dialog();
}
);
}
function unmemo_f(){
ShowConfirmDialog( '메모 삭제', '저장된 메모 기록을 삭제합니다.' )
.done( function() {
localStorage.setItem(prof_num,null);
}
);
}
function modifymemo(){
ShowConfirmDialog( '메모 수정', '저장된 메모 기록을 수정하시겠습니까?' )
.done( function(){
if(MMDATA == null){
ShowPromptDialog("\uba54\ubaa8\ud558\uae30", "\uba54\ubaa8\ub97c \uc785\ub825\ud558\uc138\uc694.", "\uc800\uc7a5\ud558\uae30", "\ucde8\uc18c" )
.done( function (Nmemo, other){
var memo = Nmemo;
if (memo != null){
localStorage.setItem(prof_num, 1 +":" + Nmemo);
}
}
);
}
else{
ShowPromptDialog("\uba54\ubaa8 \uc218\uc815\ud558\uae30", "\uba54\ubaa8\ub97c \uc785\ub825\ud558\uc138\uc694.", "\uc800\uc7a5\ud558\uae30", "\ucde8\uc18c" )
.done( function (Itmemo, other){
var num_memo = localStorage.getItem(prof_num).split(':')[0]
var memo = Itmemo;
if (memo != null){
localStorage.setItem(prof_num, num_memo +":" + memo);
}
}
);
}
}
);
}
function Mod_btn_new(){
var mth_drop = document.querySelector("[class='popup_body popup_menu shadow_content'");
var blnmemo = document.createElement( 'a' );
var onlymemo = document.createElement( 'a' );
var new_blnmemoText = document.createTextNode( '\u00a0 차단 및 메모하기');
var memoText = document.createTextNode( '\u00a0 메모만 하기' );
var img_src_blnmemo = document.createElement("img");
img_src_blnmemo.src = "https://raw.githubusercontent.com/degalludong/SBM-userscript/main/chadan.png"; // 차단메모 이미지 경로 설정
var img_src_memo = document.createElement("img");
img_src_memo.src = "https://raw.githubusercontent.com/degalludong/SBM-userscript/main/memo.png"; // 메모만 하기 이미지 경로 설정
blnmemo.setAttribute("class","popup_menu_item");
blnmemo.onclick = register
onlymemo.setAttribute("class","popup_menu_item");
onlymemo.onclick = modifymemo
blnmemo.appendChild(img_src_blnmemo);
onlymemo.appendChild(img_src_memo);
blnmemo.appendChild(new_blnmemoText);
onlymemo.appendChild(memoText);
mth_drop.appendChild(blnmemo);
mth_drop.appendChild(onlymemo);
}
function Mod_btn_memoed(){
var mth_drop = document.querySelector("[class='popup_body popup_menu shadow_content'");
var unmemo = document.createElement( 'a' );
var modmemo = document.createElement( 'a' );
var new_unmemoText = document.createTextNode( '\u00a0 메모 삭제하기');
var new_modmemoText = document.createTextNode( '\u00a0 메모 수정하기' );
var img_src_unmemo = document.createElement("img");
img_src_unmemo.src = "https://raw.githubusercontent.com/degalludong/SBM-userscript/main/chadan.png"; // 메모삭제 이미지 경로 설정
var img_src_mdmm = document.createElement("img");
img_src_mdmm.src = "https://raw.githubusercontent.com/degalludong/SBM-userscript/main/memo.png"; // 메모수정 이미지 경로 설정
unmemo.setAttribute("class","popup_menu_item");
unmemo.onclick = unmemo_f
modmemo.setAttribute("class","popup_menu_item");
modmemo.onclick = modifymemo
unmemo.appendChild(img_src_unmemo);
modmemo.appendChild(img_src_mdmm);
unmemo.appendChild(new_unmemoText);
modmemo.appendChild(new_modmemoText);
mth_drop.appendChild(unmemo);
mth_drop.appendChild(modmemo);
}
function Mod_btn_blocked(){
var mth_drop = document.querySelector("[class='popup_body popup_menu shadow_content'");
var blnmemo = document.createElement( 'a' );
var modmemo = document.createElement( 'a' );
var new_ublnmemoText = document.createTextNode( '\u00a0 차단해제 및 메모 삭제하기');
var new_modmemoText = document.createTextNode( '\u00a0 메모 수정하기' );
var img_src_ub = document.createElement("img");
img_src_ub.src = "https://raw.githubusercontent.com/degalludong/SBM-userscript/main/chadan.png"; // 차단해제 이미지 경로 설정
var img_src_mdmm = document.createElement("img");
img_src_mdmm.src = "https://raw.githubusercontent.com/degalludong/SBM-userscript/main/memo.png"; // 메모수정 이미지 경로 설정
blnmemo.setAttribute("class","popup_menu_item");
blnmemo.onclick = unregister
modmemo.setAttribute("class","popup_menu_item");
modmemo.onclick = modifymemo
blnmemo.appendChild(img_src_ub);
modmemo.appendChild(img_src_mdmm);
blnmemo.appendChild(new_ublnmemoText);
modmemo.appendChild(new_modmemoText);
mth_drop.appendChild(blnmemo);
mth_drop.appendChild(modmemo);
}
(function () {
if(document.querySelector("[id='friends_blocked']") != null){
memo_export_Chrome();
}
else{
if(MMDATA == null){
Mod_btn_new();
}
else if(MMDATA.split(':')[0] == 2){
Red();
Mod_btn_blocked();
}
else if(MMDATA.split(':')[0] == 1){
Blue();
Mod_btn_memoed();
}
else{
Mod_btn_new();
}
}
}
)();