@@ -40,7 +40,7 @@ import { checkPass } from "../scripts/auto_lockWebsite.js";
4040// import _ from "../md/exportScriptsToMd.js";
4141
4242const settingsBtn = document . querySelector ( ".settings" ) ;
43- const reloadBtn = document . querySelector ( ".reload " ) ;
43+ const openInNewTabBtn = document . querySelector ( ".open-in-newtab " ) ;
4444const tabDiv = document . querySelector ( "div.tab" ) ;
4545const contentDiv = document . querySelector ( "div.content" ) ;
4646const searchInput = document . querySelector ( ".search input" ) ;
@@ -502,30 +502,41 @@ function initTooltip() {
502502 "data-tooltip" ,
503503 t ( { vi : "Cài đặt" , en : "Settings" } )
504504 ) ;
505- reloadBtn . setAttribute (
505+ openInNewTabBtn . setAttribute (
506506 "data-tooltip" ,
507- t ( { vi : "Khởi động lại tiện ích " , en : "Reload extension " } )
507+ t ( { vi : "Mở trong tab mới " , en : "Open in new tab " } )
508508 ) ;
509509}
510510
511511function initSettings ( ) {
512- reloadBtn . onclick = ( ) => {
513- Swal . fire ( {
514- icon : "warning" ,
515- title : t ( {
516- vi : "Khởi động lại tiện ích?" ,
517- en : "Reload extension?" ,
518- } ) ,
519- text : t ( {
520- vi : "Các chức năng tự chạy sẽ mất kết nối, gây lỗi => cần tải lại các trang web để hoạt động trở lại." ,
521- en : "Autorun scripts will be disconnected => you have to reload websites." ,
522- } ) ,
523- showCancelButton : true ,
524- confirmButtonText : t ( { vi : "Khởi động lại" , en : "Reload" } ) ,
525- cancelButtonText : t ( { vi : "Huỷ" , en : "Cancel" } ) ,
526- } ) . then ( ( res ) => {
527- if ( res . isConfirmed ) chrome . runtime . reload ( ) ;
512+ openInNewTabBtn . onclick = async ( ) => {
513+ let exist = await chrome . tabs . query ( {
514+ url : location . href ,
528515 } ) ;
516+ if ( exist . length > 0 ) {
517+ chrome . windows . update ( exist [ 0 ] . windowId , { focused : true } ) ;
518+ window . close ( ) ;
519+ return ;
520+ }
521+
522+ trackEvent ( "CLICK_OPEN_IN_NEW_TAB" ) ;
523+
524+ let width = document . documentElement . clientWidth ,
525+ height = document . documentElement . clientHeight ,
526+ left = window . screenLeft ,
527+ top = window . screenTop ;
528+
529+ chrome . windows . create ( {
530+ url : location . href ,
531+ type : "popup" ,
532+ height,
533+ width,
534+ left,
535+ top,
536+ setSelfAsOpener : true ,
537+ } ) ;
538+
539+ window . close ( ) ;
529540 } ;
530541
531542 settingsBtn . onclick = ( ) => {
@@ -677,6 +688,18 @@ function initSettings() {
677688 const resetRow = document . createElement ( "div" ) ;
678689 resetRow . classList . add ( "row" ) ;
679690 resetRow . innerHTML = `
691+ <button
692+ data-flow="bottom"
693+ data-tooltip="${ t ( {
694+ vi : "Khởi động lại tiện ích" ,
695+ en : "Reload extension" ,
696+ } ) } ">
697+ <i class="fa-solid fa-arrows-rotate fa-lg"></i>
698+ ${ t ( {
699+ vi : "Khởi động lại" ,
700+ en : "Reload" ,
701+ } ) }
702+ </button>
680703 <button
681704 data-flow="bottom"
682705 data-tooltip="${ t ( {
@@ -690,7 +713,10 @@ function initSettings() {
690713 } ) }
691714 </button>
692715 ` ;
693- const resetBtn = resetRow . querySelector ( "button" ) ;
716+ const [ reloadBtn , resetBtn ] = Array . from (
717+ resetRow . querySelectorAll ( "button" )
718+ ) ;
719+ reloadBtn . onclick = reload ;
694720 resetBtn . onclick = reset ;
695721 body . appendChild ( resetRow ) ;
696722
@@ -704,6 +730,25 @@ function initSettings() {
704730 } ;
705731}
706732
733+ function reload ( ) {
734+ Swal . fire ( {
735+ icon : "warning" ,
736+ title : t ( {
737+ vi : "Khởi động lại tiện ích?" ,
738+ en : "Reload extension?" ,
739+ } ) ,
740+ text : t ( {
741+ vi : "Các chức năng tự chạy sẽ mất kết nối, gây lỗi => cần tải lại các trang web để hoạt động trở lại." ,
742+ en : "Autorun scripts will be disconnected => you have to reload websites." ,
743+ } ) ,
744+ showCancelButton : true ,
745+ confirmButtonText : t ( { vi : "Khởi động lại" , en : "Reload" } ) ,
746+ cancelButtonText : t ( { vi : "Huỷ" , en : "Cancel" } ) ,
747+ } ) . then ( ( res ) => {
748+ if ( res . isConfirmed ) chrome . runtime . reload ( ) ;
749+ } ) ;
750+ }
751+
707752async function backup ( ) {
708753 trackEvent ( "BACKUP" ) ;
709754 const data = {
@@ -906,5 +951,11 @@ window.addEventListener("scroll", onScrollEnd);
906951 initScrollToTop ( ) ;
907952 createTabs ( ) . then ( restoreScroll ) ;
908953
954+ chrome . windows . onFocusChanged . addListener ( ( windowId ) => {
955+ setTimeout ( async ( ) => {
956+ let currentTab = await getCurrentTab ( ) ;
957+ } , 200 ) ;
958+ } ) ;
959+
909960 checkForUpdate ( ) ;
910961} ) ( ) ;
0 commit comments