@@ -102,6 +102,50 @@ async function renderSidebarHTML() {
102102 renderBranchMenuHTML ( ) ;
103103
104104 }
105+
106+
107+ // if sidebar title is empty
108+ if ( sidebarLogo . innerText === '' ) {
109+
110+ if ( contents != '' ) {
111+
112+ // if repo is owned by logged user
113+ if ( user === loggedUser ) {
114+
115+ // show repo name and path
116+ sidebarLogo . innerText = repoName + contents ;
117+
118+ } else {
119+
120+ // show username, repo name and path
121+ sidebarLogo . innerText = user + '/' + repoName + contents ;
122+
123+ }
124+
125+ } else if ( repo != '' ) {
126+
127+ // if repo is owned by logged user
128+ if ( user === loggedUser ) {
129+
130+ // show repo name
131+ sidebarLogo . innerText = repoName ;
132+
133+ } else {
134+
135+ // show username and repo name
136+ sidebarLogo . innerText = user + '/' + repoName ;
137+
138+ }
139+
140+ } else {
141+
142+ // show title
143+ sidebarLogo . innerText = 'Repositories' ;
144+
145+ }
146+
147+ }
148+
105149
106150 // get items in current tree from git
107151 resp = await git . getItems ( treeLoc ) ;
@@ -424,7 +468,7 @@ async function renderSidebarHTML() {
424468 if ( fileType === 'video' ) fileIconHTML = videoIcon ;
425469 if ( fileType === 'audio' ) fileIconHTML = audioIcon ;
426470
427- out + = `
471+ out = `
428472 <div class="item file` + modified + `" sha="` + file . sha + `">
429473 <div class="label">
430474 ` + fileIconHTML + `
@@ -434,7 +478,7 @@ async function renderSidebarHTML() {
434478 ` + pushIcon + `
435479 </div>
436480 </div>
437- ` ;
481+ ` + out ;
438482
439483 }
440484
@@ -535,15 +579,15 @@ async function renderSidebarHTML() {
535579
536580 // render repo
537581
538- out + = `
582+ out = `
539583 <div class="item repo" ` + ( 'fullName="' + modRepoName + '"' ) + `>
540584 <div class="label">
541585 ` + repoIcon + `
542586 <a class="name">` + modRepoName . split ( '/' ) [ 1 ] + `</a>
543587 </div>
544588 ` + arrowIcon + `
545589 </div>
546- ` ;
590+ ` + out ;
547591
548592 }
549593
@@ -1542,12 +1586,13 @@ function createNewRepoInHTML() {
15421586 // play push animation
15431587 playPushAnimation ( repoEl . querySelector ( '.push-wrapper' ) ) ;
15441588
1545- // disable pushing file from HTML
1589+ // disable pushing repo from HTML
15461590 repoEl . classList . remove ( 'focused' ) ;
15471591
1548- // make file name uneditable
1592+ // make repo name uneditable
15491593 repoEl . querySelector ( '.name' ) . setAttribute ( 'contenteditable' , 'false' ) ;
15501594 repoEl . querySelector ( '.name' ) . blur ( ) ;
1595+ repoEl . querySelector ( '.name' ) . scrollTo ( 0 , 0 ) ;
15511596
15521597
15531598 // validate repo name
@@ -1703,6 +1748,7 @@ function createNewFileInHTML() {
17031748 // make file name uneditable
17041749 fileEl . querySelector ( '.name' ) . setAttribute ( 'contenteditable' , 'false' ) ;
17051750 fileEl . querySelector ( '.name' ) . blur ( ) ;
1751+ fileEl . querySelector ( '.name' ) . scrollTo ( 0 , 0 ) ;
17061752
17071753
17081754 // pad file content with random number of invisible chars
@@ -1746,15 +1792,37 @@ function createNewFileInHTML() {
17461792 } ) ;
17471793
17481794 fileEl . querySelector ( '.name' ) . textContent = fileName ;
1749-
1750-
1751- // change selected file
1752- changeSelectedFile ( treeLoc . join ( ) , fileContent , fileName , encodeUnicode ( '\r\n' ) , getFileLang ( fileName ) ,
1753- [ 0 , 0 ] , [ 0 , 0 ] , true ) ;
1795+
1796+
1797+ // generate temporary SHA
1798+ const tempSHA = generateSHA ( ) ;
1799+ setAttr ( fileEl , 'sha' , tempSHA ) ;
17541800
17551801
17561802 // open file
17571803
1804+ // if previous file selection exists
1805+ if ( selectedFile . sha ) {
1806+
1807+ // get previous selection in modifiedFiles array
1808+ let selectedItem = modifiedFiles [ selectedFile . sha ] ;
1809+
1810+ // if previous selection was modified
1811+ if ( selectedItem ) {
1812+
1813+ // save previous selection in localStorage
1814+ updateModFileContent ( selectedFile . sha , selectedFile . content ) ;
1815+ updateModFileCaretPos ( selectedFile . sha , selectedFile . caretPos ) ;
1816+ updateModFileScrollPos ( selectedFile . sha , selectedFile . scrollPos ) ;
1817+
1818+ }
1819+
1820+ }
1821+
1822+ // change selected file
1823+ changeSelectedFile ( treeLoc . join ( ) , tempSHA , fileName , encodeUnicode ( '\r\n' ) , getFileLang ( fileName ) ,
1824+ [ 0 , 0 ] , [ 0 , 0 ] , true ) ;
1825+
17581826 // if on mobile device
17591827 if ( isMobile ) {
17601828
@@ -1826,27 +1894,28 @@ function createNewFileInHTML() {
18261894 message : commitMessage ,
18271895 file : commitFile
18281896 } ;
1897+
18291898
18301899 // push file asynchronously
1831- const newSha = await git . push ( commit ) ;
1900+ const newSHA = await git . push ( commit ) ;
18321901
18331902
1834- // update file sha in HTML with new sha from Git
1835- setAttr ( fileEl , 'sha' , newSha ) ;
1903+ // update file sha in HTML with new sha from git
1904+ setAttr ( fileEl , 'sha' , newSHA ) ;
18361905
18371906 // change selected file
1838- changeSelectedFile ( treeLoc . join ( ) , newSha , fileName , encodeUnicode ( '\r\n' ) , getFileLang ( fileName ) ,
1907+ changeSelectedFile ( treeLoc . join ( ) , newSHA , fileName , encodeUnicode ( '\r\n' ) , getFileLang ( fileName ) ,
18391908 [ 0 , 0 ] , [ 0 , 0 ] , true ) ;
1840-
1909+
18411910 // Git file is eclipsed (not updated) in browser private cache,
18421911 // so store the updated file in modifiedFiles object for 1 minute after commit
1843- if ( modifiedFiles [ fileContent ] ) {
1912+ if ( modifiedFiles [ tempSHA ] ) {
18441913
1845- onFileEclipsedInCache ( fileContent , newSha , selectedFile ) ;
1914+ onFileEclipsedInCache ( tempSHA , newSHA , selectedFile ) ;
18461915
18471916 } else {
18481917
1849- onFileEclipsedInCache ( false , newSha , selectedFile ) ;
1918+ onFileEclipsedInCache ( false , newSHA , selectedFile ) ;
18501919
18511920 }
18521921
0 commit comments