diff --git a/site/src/routes/repl/[id]/_components/AppControls/index.svelte b/site/src/routes/repl/[id]/_components/AppControls/index.svelte
index 3d63118eb6..21b06464f2 100644
--- a/site/src/routes/repl/[id]/_components/AppControls/index.svelte
+++ b/site/src/routes/repl/[id]/_components/AppControls/index.svelte
@@ -59,7 +59,10 @@
headers: { Authorization },
body: JSON.stringify({
name,
- components
+ files: components.map(component => ({
+ name: `${component.name}.${component.type}`,
+ source: component.source
+ }))
})
});
@@ -107,16 +110,16 @@
const files = {};
const { components } = repl.toJSON();
- components.forEach(module => {
- const text = module.source.trim();
- if (!text.length) return; // skip empty file
- files[`${module.name}.${module.type}`] = text;
- });
-
const r = await fetch(`repl/${gist.uid}.json`, {
method: 'PATCH',
headers: { Authorization },
- body: JSON.stringify({ name, files })
+ body: JSON.stringify({
+ name,
+ files: components.map(component => ({
+ name: `${component.name}.${component.type}`,
+ source: component.source
+ }))
+ })
});
if (r.status < 200 || r.status >= 300) {
@@ -197,29 +200,21 @@ export default app;` });
- {#if $user}
-
-
-
- {/if}
+
- {#if gist}
-
-
-
- {/if}
+
{#if $user}
diff --git a/site/src/routes/repl/[id]/index.json.js b/site/src/routes/repl/[id]/index.json.js
index 77df324f19..0d15d1a193 100644
--- a/site/src/routes/repl/[id]/index.json.js
+++ b/site/src/routes/repl/[id]/index.json.js
@@ -113,7 +113,7 @@ export async function patch(req, res) {
let k, cols=[], vals=[];
for (k in obj) {
cols.push(k);
- vals.push(obj[k]);
+ vals.push(k === 'files' ? JSON.stringify(obj[k]) : obj[k]);
}
const tmp = vals.map((x, i) => `$${i + 1}`).join(',');
diff --git a/site/src/routes/repl/[id]/index.svelte b/site/src/routes/repl/[id]/index.svelte
index ac9aa68e59..15071e74c6 100644
--- a/site/src/routes/repl/[id]/index.svelte
+++ b/site/src/routes/repl/[id]/index.svelte
@@ -80,10 +80,9 @@
});
function handle_fork(event) {
- example = null;
console.log('> handle_fork', event);
gist = event.detail.gist;
- gist_id = gist.uid;
+ id = gist.uid;
}
$: svelteUrl = process.browser && version === 'local' ?
diff --git a/site/src/routes/repl/create.json.js b/site/src/routes/repl/create.json.js
index d0abaf2db3..c9c6b759ec 100644
--- a/site/src/routes/repl/create.json.js
+++ b/site/src/routes/repl/create.json.js
@@ -8,21 +8,16 @@ export async function post(req, res) {
if (!user) return; // response already sent
try {
- const { name, components } = await body(req);
+ const { name, files } = await body(req);
- const files = {};
- components.forEach(component => {
- const text = component.source.trim();
- if (!text.length) return; // skip empty file
- files[`${component.name}.${component.type}`] = text;
- });
+ console.log({ name, files });
const [row] = await query(`
insert into gists(user_id, name, files)
- values ($1, $2, $3) returning *`, [user.id, name, files]);
+ values ($1, $2, $3) returning *`, [user.id, name, JSON.stringify(files)]);
send(res, 201, {
- uid: row.uid,
+ uid: row.uid.replace(/-/g, ''),
name: row.name,
files: row.files,
owner: user.uid,