@@ -67,10 +67,30 @@ function update(message) {
6767 }
6868}
6969
70- function disableLogClicks ( ) {
71- document . querySelectorAll ( "#log .loggable" ) . forEach ( log => {
72-
70+ function setupLogCopy ( ) {
71+ const copyBtn = document . getElementById ( "copy-button" ) ;
72+ const logContainer = document . getElementById ( "log" ) ;
73+ const logFooter = document . getElementById ( "log-footer" ) ;
74+
75+ copyBtn . addEventListener ( "mouseover" , ( ) => {
76+ copyBtn . src = "resources/copy-alt.svg" ;
77+ } ) ;
78+
79+ copyBtn . addEventListener ( "mouseout" , ( ) => {
80+ copyBtn . src = "resources/journal-alt.svg" ;
7381 } ) ;
82+
83+ if ( copyBtn ) {
84+ copyBtn . addEventListener ( "click" , ( e ) => {
85+ e . stopPropagation ( ) ;
86+ const logs = "```\n" + Array . from ( logContainer . children )
87+ . map ( el => el . innerText )
88+ . join ( "\n" ) + "\n```" ;
89+ navigator . clipboard . writeText ( logs )
90+ . then ( ( ) => addLog ( "log" , new Date ( ) , `Logs copied to clipboard.` ) )
91+ . catch ( err => console . log ( err ) ) ;
92+ } ) ;
93+ }
7494}
7595
7696let recent = [ ]
@@ -86,7 +106,7 @@ const logFooter = document.getElementById("log-footer");
86106function addLog ( messageType , messageDate , ...message ) {
87107 recent . unshift ( message )
88108 while ( recent . length >= 100 ) {
89- log . removeChild ( log . children [ log . children . length - 1 ] )
109+ log . removeChild ( log . children [ 0 ] )
90110 recent . pop ( )
91111 }
92112
@@ -96,14 +116,9 @@ function addLog(messageType, messageDate, ...message) {
96116 const f = ( t , l = 2 ) => t . toString ( ) . padStart ( l , "0" )
97117 const date = document . createElement ( "span" )
98118 date . className = "date"
99- date . innerText = `${ f ( messageDate . getHours ( ) ) } :${ f ( messageDate . getMinutes ( ) ) } :${ f ( messageDate . getSeconds ( ) ) } .${ f ( messageDate . getMilliseconds ( ) , 3 ) } `
119+ date . innerText = `${ f ( messageDate . getHours ( ) ) } :${ f ( messageDate . getMinutes ( ) ) } :${ f ( messageDate . getSeconds ( ) ) } .${ f ( messageDate . getMilliseconds ( ) , 3 ) } `
100120 elem . appendChild ( date )
101121
102- const separator = document . createElement ( "span" )
103- separator . className = "separator"
104- separator . innerText = ": "
105- elem . appendChild ( separator )
106-
107122 const msg = document . createElement ( "span" )
108123 msg . className = "msg"
109124 msg . innerText = message . map ( k => {
@@ -126,8 +141,13 @@ function addLog(messageType, messageDate, ...message) {
126141 elem . style . overflowX = "hidden"
127142 } )
128143
129- log . appendChild ( elem , log . firstChild )
130- logFooter . textContent = `${ date . innerText } : ${ msg . innerText } `
144+ log . appendChild ( elem )
145+
146+ const elemClone = elem . cloneNode ( elem )
147+ elemClone . className = ""
148+ elemClone . style = "padding: 1px;"
149+ logFooter . textContent = ""
150+ logFooter . appendChild ( elemClone )
131151
132152 navLog . scrollTop = navLog . scrollHeight
133153 navLog . scrollLeft = navLog . scrollWidth
@@ -991,5 +1011,6 @@ document.getElementById("openAssetsWiki").onclick = () => shell.openExternal(`${
9911011
9921012ipcRenderer . send ( "getRecent" )
9931013ipcRenderer . send ( "getConfig" )
1014+ setupLogCopy ( )
9941015
9951016document . title = document . getElementById ( "checkVersion" ) . innerText = `KCCacheProxy v${ remote . app . getVersion ( ) } `
0 commit comments