Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 25 additions & 19 deletions filebrowser.js
Original file line number Diff line number Diff line change
Expand Up @@ -971,17 +971,30 @@ async function pushFileFromHTML(fileEl, commitMessage) {
fileEl.classList.remove('modified');
bottomFloat.classList.remove('modified');


// if the current file hasn't been pushed yet,
// await file creation

const newFilePendingPromise = newFilePendingPromises[getAttr(fileEl, 'sha')];

if (newFilePendingPromise) {

await newFilePendingPromise;

}


// get file selected status
const fileSelected = fileEl.classList.contains('selected');

// create commit
const commitFile = fileSelected ? selectedFile : modifiedFiles[getAttr(fileEl, 'sha')];

let commit = {
message: commitMessage,
file: commitFile
};

// push file asynchronously
const newSha = await git.push(commit);

Expand Down Expand Up @@ -1867,6 +1880,9 @@ function createNewRepoInHTML() {

// create new file
// on click of button

const newFilePendingPromises = {};

function createNewFileInHTML() {

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


// push file asynchronously
const newSHA = await git.push(commit);

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

// update file sha in HTML with new sha from git
setAttr(fileEl, 'sha', newSHA);

// change selected file
changeSelectedFile(treeLoc.join(), newSHA, fileName, encodeUnicode('\r\n'), getFileLang(fileName),
[0, 0], [0, 0], true);
const newSHA = await newFilePendingPromises[tempSHA];

delete newFilePendingPromises[tempSHA];


// Git file is eclipsed (not updated) in browser private cache,
// so store the updated file in modifiedFiles object for 1 minute after commit
if (modifiedFiles[tempSHA]) {

onFileEclipsedInCache(tempSHA, newSHA, selectedFile);

} else {

onFileEclipsedInCache(false, newSHA, selectedFile);

}
onFileEclipsedInCache(tempSHA, newSHA, selectedFile);


// remove push listener
Expand Down Expand Up @@ -2769,7 +2775,7 @@ function setupSidebar() {

} else if (isMobile) {

// update bottom floater
// update bottom float
updateFloat();

}
Expand Down
99 changes: 55 additions & 44 deletions files.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,57 +110,68 @@ function onFileEclipsedInCache(oldSha, newSha, newFile) {
if (fileEl) setAttr(fileEl, 'sha', newSha);


let fileToUpdate;
// search for old eclipsed file
// in modifiedFiles
const oldEclipsedFile = modifiedFiles[oldSha];

// if old sha exists
if (oldSha) {

// store the updated file under old sha as key

// find the eclipsed file
fileToUpdate = modifiedFiles[oldSha];
// if old eclipsed file
// is modified
if (oldEclipsedFile) {

// update old eclipsed file sha
// to point to new file sha
updateOldEclipsedFile(oldEclipsedFile, newSha);

if (fileToUpdate) {

// update old file to new sha
fileToUpdate.sha = newSha;

// update old file caret pos
fileToUpdate.caretPos = [0, 0];

// set old file to eclipsed mode
fileToUpdate.eclipsed = true;
}

// if file to update is selected
if (selectedFile.sha === oldSha) {

// update its content
// to the selected file contents
fileToUpdate.content = selectedFile.content;
// if old eclipsed file
// is selected
if (selectedFile.sha === oldSha) {

// update selected file to new sha
selectedFile.sha = newSha;

// set selected file to eclipsed mode
selectedFile.eclipsed = true;
// update old eclipsed file sha
// to point to new file sha
updateOldEclipsedFile(selectedFile, newSha);

updateSelectedFileLS();


// if old eclipsed file
// is modified
if (oldEclipsedFile) {

// update old file content
// to selected file content
oldEclipsedFile.content = selectedFile.content;

updateSelectedFileLS();

}

}

}


function updateOldEclipsedFile(oldEclipsedFile, newSha) {

} else {

fileToUpdate = newFile;
// update old eclipsed file sha to point to new file sha
oldEclipsedFile.sha = newSha;

// set old file to eclipsed mode
oldEclipsedFile.eclipsed = true;

}


if (fileToUpdate) {
// if old eclipsed file is modified
if (oldEclipsedFile) {

// store the modified file under new sha as key
modifiedFiles[newSha] = oldEclipsedFile;

} else if (selectedFile.sha === oldSha) {

// if old eclipsed file is selected

// store the updated file under new sha as key
modifiedFiles[newSha] = fileToUpdate;
// store the selected file under new sha as key
modifiedFiles[newSha] = selectedFile;

}

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


// set 1 minute timeout to remove updated files
// set 1 minute timeout to remove eclipsed files
window.setTimeout(() => {

// if old sha exists
if (oldSha) {
// if old eclipsed file exists
if (modifiedFiles[oldSha]) {

// remove the updated file under old sha as key
// delete the old eclipsed file
// from modifiedFiles
deleteModFile(oldSha);

}

// if not edited updated file under new sha as key
// if not edited eclipsed file under new sha as key
// while in timeout (file is still eclipsed)
if (modifiedFiles[newSha] &&
modifiedFiles[newSha].eclipsed) {

// remove the updated file under new sha as key
// remove the eclipsed file under new sha as key
// from modifiedFiles
deleteModFile(newSha);

Expand Down
64 changes: 48 additions & 16 deletions git/gitauth.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,18 @@ window.onload = async () => {
})


window.addEventListener('message', (event) => {

window.addEventListener('message', async (event) => {
// hide intro screen
sidebar.classList.remove('intro');

// if on Repositories page
if (treeLoc[1] === '') {

// show sidebar title
sidebarLogo.innerText = 'Repositories';

}

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

// get git token from Github
getGithubToken(gitCode);
await getGithubToken(gitCode);

// render sidebar
renderSidebarHTML();

})


loadLS();


// if git code exists in link
if (linkData.gitCode) {

// hide intro screen
sidebar.classList.remove('intro');

// if on Repositories page
if (treeLoc[1] === '') {

// show sidebar title
sidebarLogo.innerText = 'Repositories';

}

// don't transition
body.classList.add('notransition');

toggleSidebar(true);

onNextFrame(() => {

body.classList.remove('notransition');

});


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

// get git token from Github
getGithubToken(gitCode);
await getGithubToken(gitCode);

}


loadLS();

}

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


// get logged user
loggedUser = await axios.get('https://api.github.com/user', gitToken);
loggedUser = loggedUser.login;

// save logged user in local storage
setStorage('loggedUser', loggedUser);

// if logged user dosen't exist
if (getStorage('loggedUser') === null) {

// render sidebar
renderSidebarHTML();
// get logged user
loggedUser = await axios.get('https://api.github.com/user', gitToken);
loggedUser = loggedUser.login;

// save logged user in local storage
setStorage('loggedUser', loggedUser);

}

}

2 changes: 1 addition & 1 deletion worker/client-channel.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


// update worker name when updating worker
const WORKER_NAME = 'codeit-worker-v535';
const WORKER_NAME = 'codeit-worker-v536';


// internal paths
Expand Down