UNPKG

podchat-browser

Version:

Javascript SDK to use POD's Chat Service - Browser Only

147 lines (123 loc) 6 kB
"use strict"; var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var tus = _interopRequireWildcard(require("tus-js-client")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var upload = {}; function UploadMethods(app) { function sendResumableFileMessage(params, callbacks) { init(params, callbacks); start(params.uniqueId); } function init(params, callbacks) { var file = params.file, userGroupHash = params.userGroupHash, threadId = params.threadId, uniqueId = params.uniqueId, fileObject = params.fileObject, originalFileName = params.originalFileName; upload[uniqueId] = new tus.Upload(file, { // endpoint: props.data.upload_url, // endpoint: "https://podspace.pod.ir/api/usergroups/" + userGroupHash + "/files", endpoint: app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + "/api/files/resumable_upload", retryDelays: [0, 3000, 5000, 10000, 20000, 30000, 40000, 50000, 60000], // crossDomain: false, chunkSize: 1024 * 1024 * 5, // chunkSize: 102400, // overridePatchMethod:true, // mode: 'cors', // cache: 'no-cache', // credentials: 'same-origin', headers: { 'Authorization': 'Bearer ' + app.sdkParams.token // "Content-Type": "application/offset+octet-stream", // "Access-Control-Allow-Origin": "*", // "Access-Control-Allow-Methods": "GET,POST,HEAD,PUT,PATCH,DELETE,OPTIONS,DELETE", }, // redirect: 'follow', // referrerPolicy: 'no-referrer', metadata: { userGroupHash: userGroupHash, name: file.name }, onError: function onError(error) {}, onProgress: function onProgress(bytesUploaded, bytesTotal) { var percentage = (bytesUploaded / bytesTotal * 100).toFixed(0); if (percentage > upload[uniqueId].last_percentage) { app.chatEvents.fireEvent('fileUploadEvents', { threadId: threadId, uniqueId: uniqueId, state: 'UPLOADING', progress: percentage, fileInfo: { fileName: originalFileName, fileSize: fileObject.size }, fileObject: fileObject }); } upload[uniqueId].last_percentage = percentage; }, onSuccess: function onSuccess() { fetch(app.sdkParams.SERVICE_ADDRESSES.PODSPACE_FILESERVER_ADDRESS + "/api/files/uploaded_file_info/" + upload[uniqueId].url.split("/").pop(), { headers: { 'Authorization': 'Bearer ' + app.sdkParams.token } }).then(function (serverPromise) { serverPromise.json().then(function (result) { callbacks && callbacks(result); }); }); delete upload[uniqueId]; }, onShouldRetry: function onShouldRetry(err, retryAttempt, options) { var status = err.originalResponse ? err.originalResponse.getStatus() : 0; // Do not retry if the status is a 403. if (status === 400 || status === 401) { return false; } // For any other status code, we retry. return true; } }); } function resume(uniqueId) { var _upload$uniqueId, _upload$uniqueId2; // Check if there are any previous uploads to continue. (_upload$uniqueId = upload[uniqueId]) === null || _upload$uniqueId === void 0 ? void 0 : _upload$uniqueId.findPreviousUploads().then(function (previousUploads) { // Found previous uploads so we select the first one. if (previousUploads.length) { upload[uniqueId].resumeFromPreviousUpload(previousUploads[0]); } }); (_upload$uniqueId2 = upload[uniqueId]) === null || _upload$uniqueId2 === void 0 ? void 0 : _upload$uniqueId2.start(); } function start(uniqueId) { var _upload$uniqueId3; upload[uniqueId].findPreviousUploads().then(function (previousUploads) { // Found previous uploads so we select the first one. if (previousUploads.length) { upload[uniqueId].resumeFromPreviousUpload(previousUploads[0]); } }); (_upload$uniqueId3 = upload[uniqueId]) === null || _upload$uniqueId3 === void 0 ? void 0 : _upload$uniqueId3.start(); } function pause(uniqueId) { var _upload$uniqueId4; (_upload$uniqueId4 = upload[uniqueId]) === null || _upload$uniqueId4 === void 0 ? void 0 : _upload$uniqueId4.abort(); } function abort(uniqueId) { var _upload$uniqueId5; (_upload$uniqueId5 = upload[uniqueId]) === null || _upload$uniqueId5 === void 0 ? void 0 : _upload$uniqueId5.abort(); } return { sendResumableFileMessage: sendResumableFileMessage, resume: resume, start: start, pause: pause, abort: abort }; } var _default = UploadMethods; exports["default"] = _default;