mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-02-01 03:12:42 +01:00
ImportHandler: Pass ImportError
to import
hook
This commit is contained in:
parent
d1da8f1ebd
commit
4d457f6296
3 changed files with 16 additions and 2 deletions
|
@ -19,6 +19,7 @@
|
||||||
* New APIs for processing attributes: `ep_etherpad-lite/static/js/attributes`
|
* New APIs for processing attributes: `ep_etherpad-lite/static/js/attributes`
|
||||||
(low-level API) and `ep_etherpad-lite/static/js/AttributeMap` (high-level
|
(low-level API) and `ep_etherpad-lite/static/js/AttributeMap` (high-level
|
||||||
API).
|
API).
|
||||||
|
* The `import` server-side hook has a new `ImportError` context property.
|
||||||
|
|
||||||
### Compatibility changes
|
### Compatibility changes
|
||||||
|
|
||||||
|
|
|
@ -821,6 +821,19 @@ Context properties:
|
||||||
period** (examples: `'.docx'`, `'.html'`, `'.etherpad'`).
|
period** (examples: `'.docx'`, `'.html'`, `'.etherpad'`).
|
||||||
* `padId`: The identifier of the destination pad.
|
* `padId`: The identifier of the destination pad.
|
||||||
* `srcFile`: The document to convert.
|
* `srcFile`: The document to convert.
|
||||||
|
* `ImportError`: Subclass of Error that can be thrown to provide a specific
|
||||||
|
error message to the user. The constructor's first argument must be a string
|
||||||
|
matching one of the [known error
|
||||||
|
identifiers](https://github.com/ether/etherpad-lite/blob/1.8.16/src/static/js/pad_impexp.js#L80-L86).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
exports.import = async (hookName, {fileEnding, ImportError}) => {
|
||||||
|
// Reject all *.etherpad imports with a permission denied message.
|
||||||
|
if (fileEnding === '.etherpad') throw new ImportError('permission');
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
## `userJoin`
|
## `userJoin`
|
||||||
|
|
||||||
|
|
|
@ -142,8 +142,8 @@ const doImport = async (req, res, padId) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const destFile = path.join(tmpDirectory, `etherpad_import_${randNum}.${exportExtension}`);
|
const destFile = path.join(tmpDirectory, `etherpad_import_${randNum}.${exportExtension}`);
|
||||||
const importHandledByPlugin =
|
const context = {srcFile, destFile, fileEnding, padId, ImportError};
|
||||||
(await hooks.aCallAll('import', {srcFile, destFile, fileEnding, padId})).some((x) => x);
|
const importHandledByPlugin = (await hooks.aCallAll('import', context)).some((x) => x);
|
||||||
const fileIsEtherpad = (fileEnding === '.etherpad');
|
const fileIsEtherpad = (fileEnding === '.etherpad');
|
||||||
const fileIsHTML = (fileEnding === '.html' || fileEnding === '.htm');
|
const fileIsHTML = (fileEnding === '.html' || fileEnding === '.htm');
|
||||||
const fileIsTXT = (fileEnding === '.txt');
|
const fileIsTXT = (fileEnding === '.txt');
|
||||||
|
|
Loading…
Reference in a new issue