Skip to content

Commit da2cef2

Browse files
authored
Merge pull request #171 from codeitcodes/dev
2 parents 215f639 + 1b73aa7 commit da2cef2

File tree

4 files changed

+129
-80
lines changed

4 files changed

+129
-80
lines changed

filebrowser.js

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -971,17 +971,30 @@ async function pushFileFromHTML(fileEl, commitMessage) {
971971
fileEl.classList.remove('modified');
972972
bottomFloat.classList.remove('modified');
973973

974+
975+
// if the current file hasn't been pushed yet,
976+
// await file creation
977+
978+
const newFilePendingPromise = newFilePendingPromises[getAttr(fileEl, 'sha')];
979+
980+
if (newFilePendingPromise) {
981+
982+
await newFilePendingPromise;
983+
984+
}
985+
986+
974987
// get file selected status
975988
const fileSelected = fileEl.classList.contains('selected');
976-
989+
977990
// create commit
978991
const commitFile = fileSelected ? selectedFile : modifiedFiles[getAttr(fileEl, 'sha')];
979992

980993
let commit = {
981994
message: commitMessage,
982995
file: commitFile
983996
};
984-
997+
985998
// push file asynchronously
986999
const newSha = await git.push(commit);
9871000

@@ -1867,6 +1880,9 @@ function createNewRepoInHTML() {
18671880

18681881
// create new file
18691882
// on click of button
1883+
1884+
const newFilePendingPromises = {};
1885+
18701886
function createNewFileInHTML() {
18711887

18721888
// if not already adding new file
@@ -2093,27 +2109,17 @@ function createNewFileInHTML() {
20932109

20942110

20952111
// push file asynchronously
2096-
const newSHA = await git.push(commit);
20972112

2113+
newFilePendingPromises[tempSHA] = git.push(commit);
20982114

2099-
// update file sha in HTML with new sha from git
2100-
setAttr(fileEl, 'sha', newSHA);
2101-
2102-
// change selected file
2103-
changeSelectedFile(treeLoc.join(), newSHA, fileName, encodeUnicode('\r\n'), getFileLang(fileName),
2104-
[0, 0], [0, 0], true);
2115+
const newSHA = await newFilePendingPromises[tempSHA];
21052116

2117+
delete newFilePendingPromises[tempSHA];
2118+
2119+
21062120
// Git file is eclipsed (not updated) in browser private cache,
21072121
// so store the updated file in modifiedFiles object for 1 minute after commit
2108-
if (modifiedFiles[tempSHA]) {
2109-
2110-
onFileEclipsedInCache(tempSHA, newSHA, selectedFile);
2111-
2112-
} else {
2113-
2114-
onFileEclipsedInCache(false, newSHA, selectedFile);
2115-
2116-
}
2122+
onFileEclipsedInCache(tempSHA, newSHA, selectedFile);
21172123

21182124

21192125
// remove push listener
@@ -2769,7 +2775,7 @@ function setupSidebar() {
27692775

27702776
} else if (isMobile) {
27712777

2772-
// update bottom floater
2778+
// update bottom float
27732779
updateFloat();
27742780

27752781
}

files.js

Lines changed: 55 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -110,57 +110,68 @@ function onFileEclipsedInCache(oldSha, newSha, newFile) {
110110
if (fileEl) setAttr(fileEl, 'sha', newSha);
111111

112112

113-
let fileToUpdate;
113+
// search for old eclipsed file
114+
// in modifiedFiles
115+
const oldEclipsedFile = modifiedFiles[oldSha];
114116

115-
// if old sha exists
116-
if (oldSha) {
117-
118-
// store the updated file under old sha as key
119-
120-
// find the eclipsed file
121-
fileToUpdate = modifiedFiles[oldSha];
117+
// if old eclipsed file
118+
// is modified
119+
if (oldEclipsedFile) {
120+
121+
// update old eclipsed file sha
122+
// to point to new file sha
123+
updateOldEclipsedFile(oldEclipsedFile, newSha);
122124

123-
if (fileToUpdate) {
124-
125-
// update old file to new sha
126-
fileToUpdate.sha = newSha;
127-
128-
// update old file caret pos
129-
fileToUpdate.caretPos = [0, 0];
130-
131-
// set old file to eclipsed mode
132-
fileToUpdate.eclipsed = true;
125+
}
133126

134-
// if file to update is selected
135-
if (selectedFile.sha === oldSha) {
136127

137-
// update its content
138-
// to the selected file contents
139-
fileToUpdate.content = selectedFile.content;
128+
// if old eclipsed file
129+
// is selected
130+
if (selectedFile.sha === oldSha) {
140131

141-
// update selected file to new sha
142-
selectedFile.sha = newSha;
143-
144-
// set selected file to eclipsed mode
145-
selectedFile.eclipsed = true;
132+
// update old eclipsed file sha
133+
// to point to new file sha
134+
updateOldEclipsedFile(selectedFile, newSha);
135+
136+
updateSelectedFileLS();
137+
138+
139+
// if old eclipsed file
140+
// is modified
141+
if (oldEclipsedFile) {
142+
143+
// update old file content
144+
// to selected file content
145+
oldEclipsedFile.content = selectedFile.content;
146146

147-
updateSelectedFileLS();
148-
149-
}
150-
151147
}
148+
149+
}
150+
151+
152+
function updateOldEclipsedFile(oldEclipsedFile, newSha) {
152153

153-
} else {
154-
155-
fileToUpdate = newFile;
154+
// update old eclipsed file sha to point to new file sha
155+
oldEclipsedFile.sha = newSha;
156+
157+
// set old file to eclipsed mode
158+
oldEclipsedFile.eclipsed = true;
156159

157160
}
158161

159162

160-
if (fileToUpdate) {
163+
// if old eclipsed file is modified
164+
if (oldEclipsedFile) {
165+
166+
// store the modified file under new sha as key
167+
modifiedFiles[newSha] = oldEclipsedFile;
168+
169+
} else if (selectedFile.sha === oldSha) {
170+
171+
// if old eclipsed file is selected
161172

162-
// store the updated file under new sha as key
163-
modifiedFiles[newSha] = fileToUpdate;
173+
// store the selected file under new sha as key
174+
modifiedFiles[newSha] = selectedFile;
164175

165176
}
166177

@@ -169,24 +180,24 @@ function onFileEclipsedInCache(oldSha, newSha, newFile) {
169180
updateModFilesLS();
170181

171182

172-
// set 1 minute timeout to remove updated files
183+
// set 1 minute timeout to remove eclipsed files
173184
window.setTimeout(() => {
174185

175-
// if old sha exists
176-
if (oldSha) {
186+
// if old eclipsed file exists
187+
if (modifiedFiles[oldSha]) {
177188

178-
// remove the updated file under old sha as key
189+
// delete the old eclipsed file
179190
// from modifiedFiles
180191
deleteModFile(oldSha);
181192

182193
}
183194

184-
// if not edited updated file under new sha as key
195+
// if not edited eclipsed file under new sha as key
185196
// while in timeout (file is still eclipsed)
186197
if (modifiedFiles[newSha] &&
187198
modifiedFiles[newSha].eclipsed) {
188199

189-
// remove the updated file under new sha as key
200+
// remove the eclipsed file under new sha as key
190201
// from modifiedFiles
191202
deleteModFile(newSha);
192203

git/gitauth.js

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,18 @@ window.onload = async () => {
7676
})
7777

7878

79-
window.addEventListener('message', (event) => {
80-
79+
window.addEventListener('message', async (event) => {
80+
8181
// hide intro screen
8282
sidebar.classList.remove('intro');
83+
84+
// if on Repositories page
85+
if (treeLoc[1] === '') {
86+
87+
// show sidebar title
88+
sidebarLogo.innerText = 'Repositories';
89+
90+
}
8391

8492
// if on safari, refresh header color
8593
if (isSafari) {
@@ -100,19 +108,39 @@ window.onload = async () => {
100108
const gitCode = event.data;
101109

102110
// get git token from Github
103-
getGithubToken(gitCode);
111+
await getGithubToken(gitCode);
112+
113+
// render sidebar
114+
renderSidebarHTML();
104115

105116
})
106117

107118

108-
loadLS();
109-
110-
111119
// if git code exists in link
112120
if (linkData.gitCode) {
113121

114122
// hide intro screen
115123
sidebar.classList.remove('intro');
124+
125+
// if on Repositories page
126+
if (treeLoc[1] === '') {
127+
128+
// show sidebar title
129+
sidebarLogo.innerText = 'Repositories';
130+
131+
}
132+
133+
// don't transition
134+
body.classList.add('notransition');
135+
136+
toggleSidebar(true);
137+
138+
onNextFrame(() => {
139+
140+
body.classList.remove('notransition');
141+
142+
});
143+
116144

117145
// if on safari, refresh header color
118146
if (isSafari) {
@@ -133,9 +161,12 @@ window.onload = async () => {
133161
const gitCode = linkData.gitCode;
134162

135163
// get git token from Github
136-
getGithubToken(gitCode);
164+
await getGithubToken(gitCode);
137165

138166
}
167+
168+
169+
loadLS();
139170

140171
}
141172

@@ -153,16 +184,17 @@ async function getGithubToken(gitCode) {
153184
saveGitTokenLS(gitToken);
154185

155186

156-
// get logged user
157-
loggedUser = await axios.get('https://api.github.com/user', gitToken);
158-
loggedUser = loggedUser.login;
159-
160-
// save logged user in local storage
161-
setStorage('loggedUser', loggedUser);
162-
187+
// if logged user dosen't exist
188+
if (getStorage('loggedUser') === null) {
163189

164-
// render sidebar
165-
renderSidebarHTML();
190+
// get logged user
191+
loggedUser = await axios.get('https://api.github.com/user', gitToken);
192+
loggedUser = loggedUser.login;
193+
194+
// save logged user in local storage
195+
setStorage('loggedUser', loggedUser);
196+
197+
}
166198

167199
}
168200

worker/client-channel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
// update worker name when updating worker
7-
const WORKER_NAME = 'codeit-worker-v535';
7+
const WORKER_NAME = 'codeit-worker-v536';
88

99

1010
// internal paths

0 commit comments

Comments
 (0)