X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fmisc%2Futils.ts;h=64bc69b0daf95a923c874017f7568e504bc695ab;hb=5de8a55abce53108bc1024f1194457c6528bd11e;hp=6620ac9737f5fe5678c125d32cd6d36d26b4811f;hpb=3290f37c76784f1b96cefb5d389e48db56033b0a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/misc/utils.ts b/client/src/app/shared/misc/utils.ts index 6620ac973..64bc69b0d 100644 --- a/client/src/app/shared/misc/utils.ts +++ b/client/src/app/shared/misc/utils.ts @@ -55,6 +55,10 @@ function dateToHuman (date: string) { return datePipe.transform(date, 'medium') } +function immutableAssign (target: A, source: B) { + return Object.assign({}, target, source) +} + function isInSmallView () { return window.innerWidth < 600 } @@ -63,6 +67,33 @@ function isInMobileView () { return window.innerWidth < 500 } +// Thanks: https://gist.github.com/ghinda/8442a57f22099bdb2e34 +function objectToFormData (obj: any, form?: FormData, namespace?: string) { + let fd = form || new FormData() + let formKey + + for (let key of Object.keys(obj)) { + if (namespace) formKey = `${namespace}[${key}]` + else formKey = key + + if (obj[key] === undefined) continue + + if (typeof obj[ key ] === 'object' && !(obj[ key ] instanceof File)) { + objectToFormData(obj[ key ], fd, key) + } else { + fd.append(formKey, obj[ key ]) + } + } + + return fd +} + +function lineFeedToHtml (obj: object, keyToNormalize: string) { + return immutableAssign(obj, { + [keyToNormalize]: obj[keyToNormalize].replace(/\r?\n|\r/g, '
') + }) +} + export { viewportHeight, getParameterByName, @@ -70,5 +101,8 @@ export { getAbsoluteAPIUrl, dateToHuman, isInSmallView, - isInMobileView + isInMobileView, + immutableAssign, + objectToFormData, + lineFeedToHtml }