Skip to content

Commit 6ac5919

Browse files
Feat: Welcome screen improvement and harmanize the flow with file browser (#165)
* feat: added welcome screen improvement * feat: added all the flow for new Create Session and welcome screen * fix: test fixed as per structural flow change for create session and files * chores: show open and close if any of the value exist * chores: requested changes updated * Test fail fix * chore: update wording --------- Co-authored-by: silvester-pari <[email protected]>
1 parent f23ae6e commit 6ac5919

File tree

17 files changed

+412
-319
lines changed

17 files changed

+412
-319
lines changed

cypress/e2e/file-browser.cy.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,10 @@ describe("File browser related tests", () => {
8080
it("Add new file", () => {
8181
cy.get(".add-file-btn").click();
8282
cy.get(".v-list-item").eq(0).click();
83-
cy.get(".new-session-btn").click();
8483
cy.get(".session-create-field .v-field__input").type(dummySession.title, {
8584
delay: 100,
8685
});
87-
cy.get(".session-create-btn").click();
86+
cy.get(".new-session-btn").click();
8887
cy.wait("@createPulls");
8988
cy.get(".add-file-field").type("newFile.txt", { delay: 100 });
9089
cy.get(".add-file-button").click();

cypress/e2e/files-list.cy.js

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ describe("Files list related tests", () => {
5656
// Add uploaded file if flag is set
5757
if (isUploadFile) {
5858
tempData.push({
59-
filename: "hello/code.js",
59+
filename: "eo-missions/code.js",
6060
status: "added",
6161
additions: 34,
6262
deletions: 0,
@@ -262,13 +262,13 @@ describe("Files list related tests", () => {
262262

263263
// Test adding new manual content
264264
it("Add new manual content", () => {
265-
cy.get(".navbar .v-btn.action-button").click();
266-
cy.get(".v-list.button-list .v-list-item").eq(1).click();
267-
cy.get(".session-create-field .v-field__input").type("manual-file.txt", {
268-
delay: 100,
269-
});
265+
cy.get(".navbar .v-btn.session-file-btn").click();
266+
cy.get(".add-file-btn").click();
267+
cy.get(".v-list-item").eq(0).click();
268+
cy.get(".current-session-btn").click();
269+
cy.get(".add-file-field").type("manual-file.txt", { delay: 100 });
270270
isManualContent = true;
271-
cy.get(".session-create-field .mdi-plus").click();
271+
cy.get(".add-file-button").click();
272272
cy.location("pathname", { timeout: 10000 }).should(
273273
"eq",
274274
"/123/bWFudWFsLWZpbGUudHh0",
@@ -283,14 +283,11 @@ describe("Files list related tests", () => {
283283
// Test file upload functionality
284284
it("Upload a file", () => {
285285
cy.wait(2000);
286-
cy.get(".navbar .v-btn.action-button").click();
287-
cy.get(".v-list.button-list .v-list-item").eq(2).click();
288-
cy.get(".create-file .session-create-field .v-field__input").type(
289-
"hello/",
290-
{
291-
delay: 100,
292-
},
293-
);
286+
cy.get(".navbar .v-btn.session-file-btn").click();
287+
cy.get(".files-browse-list").eq(2).click();
288+
cy.get(".add-file-btn").click();
289+
cy.get(".v-list-item").eq(1).click();
290+
cy.get(".current-session-btn").click();
294291
cy.get('input[type="file"]').selectFile("cypress/fixtures/code.js", {
295292
force: true,
296293
});
@@ -301,7 +298,7 @@ describe("Files list related tests", () => {
301298
cy.get(".files-list")
302299
.eq(files.length)
303300
.find(".file-title")
304-
.should("have.text", "hello/code.js");
301+
.should("have.text", "eo-missions/code.js");
305302
});
306303

307304
// Test to check if deployed preview link exists

public/img/proposed-changes.svg

Lines changed: 30 additions & 0 deletions
Loading

src/components/file-browser/Actions.vue

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<script setup>
22
import ActionTab from "@/components/global/ActionTab.vue";
3+
import { ref, watch, inject } from "vue";
4+
5+
const fileBrowserDrawer = inject("set-file-browser-drawer");
6+
const actionBtnState = ref(true);
37
48
const props = defineProps({
59
updatedFilePathArr: {
@@ -15,6 +19,13 @@ const props = defineProps({
1519
default: () => {},
1620
},
1721
});
22+
23+
watch(fileBrowserDrawer, (newVal) => {
24+
if (newVal) {
25+
if (newVal === "propose") actionBtnState.value = false;
26+
else actionBtnState.value = true;
27+
} else actionBtnState.value = true;
28+
});
1829
</script>
1930
<template>
2031
<ActionTab class="action-tab-file-browser position-sticky top-0">
@@ -41,7 +52,7 @@ const props = defineProps({
4152
</v-hover>
4253
</v-chip>
4354

44-
<v-menu attach location="bottom">
55+
<v-menu v-if="actionBtnState" attach location="bottom">
4556
<template v-slot:activator="{ props }">
4657
<v-btn
4758
color="primary"

src/components/file-browser/AddFile.vue

Lines changed: 58 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<script setup>
22
import { ref, onMounted, watch, inject } from "vue";
33
import { CreateSession } from "@/components/session/index.js";
4-
import { SessionCheck } from "./";
54
import { useLoader } from "@/helpers/index.js";
65
import { createAndUpdateFile, getSessionDetails } from "@/api/index.js";
76
import { encodeString } from "@/helpers/index.js";
@@ -11,7 +10,7 @@ const router = useRouter();
1110
const snackbar = inject("set-snackbar");
1211
const fileBrowserDrawer = inject("set-file-browser-drawer");
1312
14-
const updateInNewSession = ref(false);
13+
const updateInNewSession = ref(true);
1514
const addNewFile = ref(false);
1615
const sessionNumber = ref(null);
1716
const newFileName = ref(null);
@@ -36,6 +35,7 @@ const props = defineProps({
3635
});
3736
3837
const addNewSessionNumber = (newSessionNumber) => {
38+
updateInNewSession.value = false;
3939
sessionNumber.value = newSessionNumber;
4040
addNewFile.value = true;
4141
};
@@ -45,7 +45,6 @@ watch(props.session, (newSession) => {
4545
});
4646
4747
onMounted(() => {
48-
updateInNewSession.value = props.session ? false : true;
4948
sessionNumber.value = props.session ? props.session.number : null;
5049
});
5150
@@ -86,60 +85,70 @@ const createFile = async () => {
8685
await router.push(`/${sessionNumber.value}/${encodeString(fullFilePath)}`);
8786
}
8887
};
88+
89+
const clearInput = (success) => {
90+
updateInNewSession.value = false;
91+
if (success) {
92+
fileBrowserDrawer.value = false;
93+
props.resetOperation(true);
94+
} else props.resetOperation(false);
95+
};
96+
97+
const currentSession = () => {
98+
addNewFile.value = true;
99+
updateInNewSession.value = false;
100+
};
89101
</script>
90102
91103
<template>
92-
<v-card
93-
max-width="400"
94-
prepend-icon="mdi-file-plus-outline"
95-
title="Add a new file"
104+
<CreateSession
105+
v-if="updateInNewSession"
106+
:createNewSession="true"
107+
:fromFileBrowser="true"
108+
:filePath="filePath"
109+
:clearInput="clearInput"
110+
:session="session"
111+
:currentSession="currentSession"
112+
:noRedirectCallback="addNewSessionNumber"
113+
/>
114+
<v-dialog
115+
v-if="!updateInNewSession && addNewFile && sessionNumber"
116+
v-model="addNewFile"
117+
@update:modelValue="!$event && clearInput()"
118+
width="auto"
119+
style="z-index: 999999"
96120
>
97-
<template v-slot:text>
98-
<div v-if="addNewFile && sessionNumber">
99-
<p class="py-6">
121+
<v-card max-width="480" class="rounded-lg">
122+
<template v-slot:text>
123+
<h2 class="text-center pl-3 pr-3">Add a new file</h2>
124+
<p class="text-center px-4">
100125
Provide a name for the new file. (Note - File will be added to the
101126
path: <strong>{{ updatedFilePath }}</strong
102127
>)
103128
</p>
104129
<v-text-field
105-
v-model="newFileName"
130+
density="compact"
106131
label="File Name"
107-
placeholder="File Name"
108-
variant="outlined"
109-
class="add-file-field"
110-
/>
111-
<v-btn
112-
color="primary"
113-
size="large"
114-
variant="flat"
115-
class="add-file-button"
116-
block
117-
@click="createFile"
118-
>
119-
Add File
120-
</v-btn>
121-
</div>
122-
<div v-else-if="updateInNewSession">
123-
<p class="py-6">
124-
Create a new session to add a new file to the path:
125-
<strong>{{ updatedFilePath }}</strong
126-
>. Please provide a name for the new session.
127-
</p>
128-
<CreateSession
129-
:createNewSession="true"
130-
:fromFileBrowser="true"
131-
:noRedirectCallback="addNewSessionNumber"
132-
/>
133-
</div>
134-
<SessionCheck
135-
@currentSession="addNewFile = true"
136-
@newSession="updateInNewSession = true"
137-
v-else
138-
>
139-
Do you want to add a new file to
140-
<strong>{{ updatedFilePath }}</strong> in a
141-
<strong>new session</strong> or <strong>current session</strong>?
142-
</SessionCheck>
143-
</template>
144-
</v-card>
132+
variant="solo"
133+
hide-details
134+
single-line
135+
flat="true"
136+
v-model="newFileName"
137+
class="rounded border-md my-3 add-file-field"
138+
></v-text-field>
139+
<div class="d-flex ga-2 justify-center align-center">
140+
<v-btn
141+
color="primary"
142+
variant="flat"
143+
prepend-icon="mdi-file-plus-outline"
144+
:disabled="!newFileName"
145+
@click="createFile"
146+
class="add-file-button"
147+
>
148+
Add New File
149+
</v-btn>
150+
</div>
151+
</template>
152+
</v-card>
153+
</v-dialog>
145154
</template>

0 commit comments

Comments
 (0)