mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Fix two issues combining to report misleading error when saving to an empty name
Summary: 1. The /import endpoint wasn't handling poor names like ".grist" as intended, instead trying to import them using the plugin-based imports. 2. The SaveCopy dialog was allowing users to save to an empty name, particularly bad because new docs now default to an empty name. Error manifested as "Cannot parse data" to the user. Reported in https://secure.helpscout.net/conversation/1242629116/292 Test Plan: Added tests for both parts of the fix. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D2573
This commit is contained in:
parent
ee018ff183
commit
30866c6c95
@ -417,12 +417,12 @@ export class DocManager extends EventEmitter {
|
||||
}): Promise<DocCreationInfo> {
|
||||
try {
|
||||
const fileCount = uploadInfo.files.length;
|
||||
const hasGristDoc = Boolean(uploadInfo.files.find(f => path.extname(f.origName) === '.grist'));
|
||||
const hasGristDoc = Boolean(uploadInfo.files.find(f => extname(f.origName) === '.grist'));
|
||||
if (hasGristDoc && fileCount > 1) {
|
||||
throw new Error('Grist docs must be uploaded individually');
|
||||
}
|
||||
const first = uploadInfo.files[0].origName;
|
||||
const ext = path.extname(first);
|
||||
const ext = extname(first);
|
||||
const basename = path.basename(first, ext).trim() || "Untitled upload";
|
||||
let id: string;
|
||||
switch (options.naming) {
|
||||
@ -479,3 +479,9 @@ export class DocManager extends EventEmitter {
|
||||
return docName;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns the extension of fpath (from last occurrence of "." to the end of the string), even
|
||||
// when the basename is empty or starts with a period.
|
||||
function extname(fpath: string): string {
|
||||
return path.extname("X" + fpath);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user