//TL取得
function tl(data) {
    var tlid=0;
    var acct_id = $("#post-acct-sel").val();
    var type = $("#type-sel").val();
	var domain = localStorage.getItem("domain_" + acct_id);
	//タグの場合はカラム追加して描画
		if (!type) {
			//デフォルト
			var type = "local";
		}
	var at = localStorage.getItem("acct_"+ acct_id + "_at");
	$("#notice_nano").text(cap(type, data) + " TL(" + localStorage.getItem(
		"user_" + acct_id) + "@" + domain + ")");
	var start = "https://" + domain + "/api/v1/timelines/" + com(type, data);
	console.log(start);
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json',
			'Authorization': 'Bearer ' + at
		},
	}).then(function(response) {
		return response.json();
	}).catch(function(error) {
		console.error(error);
	}).then(function(json) {
		var templete = parse([json[0]], '', acct_id, tlid);
		$("#timeline_nano").html(templete);
		jQuery("time.timeago").timeago();
		reload(type, '', acct_id, data);
	});
}

//Streaming接続
var websocket=[];
function reload(type, cc, acct_id, data) {
    var tlid=0;
	var domain = localStorage.getItem("domain_" + acct_id);
	var at = localStorage.getItem("acct_"+ acct_id + "_at");
	if (type == "home") {
		var start = "wss://" + domain +
			"/api/v1/streaming/?stream=user&access_token=" + at;
	} else if (type == "pub") {
		var start = "wss://" + domain +
			"/api/v1/streaming/?stream=public&access_token=" + at;
	} else if (type == "local") {
		var start = "wss://" + domain +
			"/api/v1/streaming/?stream=public:local&access_token=" + at;
	} else if (type == "tag") {
		var start = "wss://" + domain +
			"/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at;
	} 
	console.log(start);
	var wsid = websocket.length;
	websocket[wsid] = new WebSocket(start);
	websocket[wsid].onopen = function(mess) {
		console.log(tlid + ":Connect Streaming API:" + type);
		console.log(mess);
		$("#notice_icon_" + tlid).removeClass("red-text");
	}
	websocket[wsid].onmessage = function(mess) {
		console.log(tlid + ":Receive Streaming API:");
		console.log(websocket[wsid]);
		var typeA = JSON.parse(mess.data).event;
		if (typeA == "delete") {
			var obj = JSON.parse(mess.data).payload;
			$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
			$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
		} else if (typeA == "update") {
			var obj = JSON.parse(JSON.parse(mess.data).payload);
			console.log(obj);
            var templete = parse([obj], '', acct_id, tlid);
            $("#timeline_nano").html(templete);
		}
		websocket[wsid].onclose = function(mess) {
			console.log("Close Streaming API:" + type);
		}
	}
	websocket[wsid].onerror = function(error) {
		console.error('WebSocket Error ' + error);
	};
}
//TLのタイトル
function cap(type, data) {
	if (type == "home") {
		return "Home"
	} else if (type == "local") {
		return "Local"
	} else if (type == "pub") {
		return "Public"
	} else if (type == "tag") {
		return "#" + data
	} else if (type == "list") {
		return "List(id:" + data + ")"
	} else if (type == "notf") {
		return "Notification"
	}
}

//TLのURL
function com(type, data) {
	if (type == "home") {
		return "home?"
	} else if (type == "local") {
		return "public?local=true&"
	} else if (type == "pub") {
		return "public?"
	} else if (type == "tag") {
		return "tag/" + data + "?"
	}
	if (type == "list") {
		return "list/" + data + "?"
	}
}

//TLのアイコン
function icon(type) {
	if (type == "home") {
		return "home"
	} else if (type == "local") {
		return "people_outline"
	} else if (type == "pub") {
		return "language"
	} else if (type == "tag") {
		return "search"
	}
	if (type == "list") {
		return "subject"
	}
}
function todo(){}
function todc(){}
function hide(){}
$(function($) {
	//キーボードショートカット
	$(window).keydown(function(e) {
		var hasFocus = $('input').is(':focus');
		var hasFocus2 = $('textarea').is(':focus');
		//Ctrl+Enter:投稿
		if (event.ctrlKey) {
			if (e.keyCode === 13) {
				post();
				return false;
			}
		}
	});
});