aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/CollectionSubView.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-12-29 01:01:55 -0500
committerbobzel <zzzman@gmail.com>2023-12-29 01:01:55 -0500
commit865478933af8166cb699cbe4a2653aa52423dedb (patch)
tree57dedd5dfe4349432a7c445f408f9e675f1f53df /src/client/views/collections/CollectionSubView.tsx
parentdf2fc3f11e3b474144db5062620c9f65ca857203 (diff)
fixed dropping images from web. fixed exif data on images and autorotating exif rotated images. fixed selecting on web pages, and resizing web pages upward so that pointer events aren't grabbed.
Diffstat (limited to 'src/client/views/collections/CollectionSubView.tsx')
-rw-r--r--src/client/views/collections/CollectionSubView.tsx31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/client/views/collections/CollectionSubView.tsx b/src/client/views/collections/CollectionSubView.tsx
index b56973dc6..2ff435ce2 100644
--- a/src/client/views/collections/CollectionSubView.tsx
+++ b/src/client/views/collections/CollectionSubView.tsx
@@ -4,11 +4,11 @@ import * as rp from 'request-promise';
import { Utils, returnFalse } from '../../../Utils';
import CursorField from '../../../fields/CursorField';
import { Doc, DocListCast, Field, Opt, StrListCast } from '../../../fields/Doc';
-import { AclPrivate } from '../../../fields/DocSymbols';
+import { AclPrivate, DocData } from '../../../fields/DocSymbols';
import { Id } from '../../../fields/FieldSymbols';
import { List } from '../../../fields/List';
import { listSpec } from '../../../fields/Schema';
-import { BoolCast, Cast, ScriptCast, StrCast } from '../../../fields/Types';
+import { BoolCast, Cast, NumCast, ScriptCast, StrCast } from '../../../fields/Types';
import { WebField } from '../../../fields/URLField';
import { GetEffectiveAcl, TraceMobx } from '../../../fields/util';
import { GestureUtils } from '../../../pen-gestures/GestureUtils';
@@ -309,20 +309,19 @@ export function CollectionSubView<X>(moreProps?: X) {
const cors = img.includes('corsProxy') ? img.match(/http.*corsProxy\//)![0] : '';
img = cors ? img.replace(cors, '') : img;
if (img) {
- const split = img.split('src="')[1].split('"')[0];
- let source = split;
- if (split.startsWith('data:image') && split.includes('base64')) {
- const [{ accessPaths }] = await Networking.PostToServer('/uploadRemoteImage', { sources: [split] });
- if (accessPaths.agnostic.client.indexOf('dashblobstore') === -1) {
- source = Utils.prepend(accessPaths.agnostic.client);
- } else {
- source = accessPaths.agnostic.client;
- }
- }
- if (source.startsWith('http')) {
- const doc = Docs.Create.ImageDocument(source, { ...options, _width: 300 });
- ImageUtils.ExtractExif(doc);
- addDocument(doc);
+ const imgSrc = img.split('src="')[1].split('"')[0];
+ const imgOpts = { ...options, _width: 300 };
+ if (imgSrc.startsWith('data:image') && imgSrc.includes('base64')) {
+ const result = (await Networking.PostToServer('/uploadRemoteImage', { sources: [imgSrc] })).lastElement();
+ const newImgSrc =
+ result.accessPaths.agnostic.client.indexOf('dashblobstore') === -1 //
+ ? Utils.prepend(result.accessPaths.agnostic.client)
+ : result.accessPaths.agnostic.client;
+
+ addDocument(ImageUtils.AssignImgInfo(Docs.Create.ImageDocument(newImgSrc, imgOpts), result));
+ } else if (imgSrc.startsWith('http')) {
+ const doc = Docs.Create.ImageDocument(imgSrc, imgOpts);
+ addDocument(ImageUtils.AssignImgInfo(doc, await ImageUtils.ExtractImgInfo(doc)));
}
return;
} else {