@devvit/ui-renderer 0.10.15-next-2024-02-14-b85ea9563.0 → 0.10.15-next-2024-02-15-ea5e1b95f.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blocks/templates/renderImageBlock.d.ts.map +1 -1
- package/blocks/templates/renderImageBlock.js +2 -2
- package/blocks/templates/util.d.ts +0 -9
- package/blocks/templates/util.d.ts.map +1 -1
- package/blocks/templates/util.js +1 -50
- package/client/devvit-custom-post.d.ts.map +1 -1
- package/client/devvit-custom-post.js +21 -12
- package/package.json +7 -7
- package/blocks/templates/constants.d.ts +0 -7
- package/blocks/templates/constants.d.ts.map +0 -1
- package/blocks/templates/constants.js +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderImageBlock.d.ts","sourceRoot":"","sources":["../../../library/src/blocks/templates/renderImageBlock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"renderImageBlock.d.ts","sourceRoot":"","sources":["../../../library/src/blocks/templates/renderImageBlock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAA6B,YAAY,EAAE,MAAM,WAAW,CAAC;AASpE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,GAAG,YAAY,CA0D/E"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { nothing } from 'lit';
|
|
2
2
|
import { getTemplateRenderingStrategy } from '@reddit/faceplate-ui/faceplateUIConfig.js';
|
|
3
3
|
import { defaultClasses, defaultStyles, imageClasses, imageStyle, onClickAction, } from '../attributes.js';
|
|
4
|
-
import { classMap,
|
|
5
|
-
import { VerifiedPublicImageHosts } from '
|
|
4
|
+
import { classMap, sanitizeDataUrl } from './util.js';
|
|
5
|
+
import { VerifiedPublicImageHosts, isDataUrl, isValidImageURL, } from '@devvit/shared-types/imageUtil.js';
|
|
6
6
|
const FALLBACK_IMG_URL = 'https://i.redd.it/p1vmc5ulmpib1.png';
|
|
7
7
|
export function renderImageBlock(block, ctx) {
|
|
8
8
|
const { html, styleMap, ifDefined } = getTemplateRenderingStrategy();
|
|
@@ -16,19 +16,10 @@ export declare function resolveIcon(name: string): TemplateResult;
|
|
|
16
16
|
* @param styleInfo
|
|
17
17
|
*/
|
|
18
18
|
export declare function sanitizeStyleInfo(styleInfo: StyleInfo): StyleInfo;
|
|
19
|
-
export declare function isDataUrl(input: string): boolean;
|
|
20
|
-
export declare function parseDataUrl(dataUrl: string): {
|
|
21
|
-
mimeType: string | undefined;
|
|
22
|
-
charset: string | undefined;
|
|
23
|
-
isBase64: boolean;
|
|
24
|
-
data: string;
|
|
25
|
-
} | null;
|
|
26
19
|
/**
|
|
27
20
|
* Only supports SVG elements!
|
|
28
21
|
*/
|
|
29
22
|
export declare function sanitizeDataUrl(dataUrl: string): string | undefined;
|
|
30
|
-
export declare function isAcceptableDataUrl(maybeDataUrl: string): boolean;
|
|
31
|
-
export declare function isValidImageURL(imageUrl: string): boolean;
|
|
32
23
|
/**
|
|
33
24
|
* Returns a BlockSizes object either directly from the block or constructs
|
|
34
25
|
* one from the legacy `size` field
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../library/src/blocks/templates/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../library/src/blocks/templates/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,OAAO,EACL,KAAK,EACL,UAAU,EACV,UAAU,EACV,0BAA0B,EAC1B,aAAa,EACd,MAAM,gBAAgB,CAAC;AAIxB,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,OAAO,OAAO,CAAC;AAE3D,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAiB5C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,YAAY,CAMxF;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,MAAM,CAM7E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE,IAAI,WAAW,CAEtF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiBxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CASjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmDnE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CA2B7D;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,0BAA0B,GAAG,SAAS,EAC7C,QAAQ,GAAE,aAAa,GAAG,SAAqB,GAC9C,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAUpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAC/B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAIzD"}
|
package/blocks/templates/util.js
CHANGED
|
@@ -4,9 +4,9 @@ import { unsafeHTML as clientUnsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
|
4
4
|
import { unsafeHTML as serverUnsafeHTML } from '@reddit/baseplate/html/html.js';
|
|
5
5
|
import { getTemplateRenderingStrategy } from '@reddit/faceplate-ui/faceplateUIConfig.js';
|
|
6
6
|
import faceplateIcons from '@reddit/faceplate-ui/svgs/svg-manifest.js';
|
|
7
|
-
import { REDD_IT, VerifiedImageHosts } from './constants.js';
|
|
8
7
|
import { BlockSizeUnit, } from '@devvit/protos';
|
|
9
8
|
import { sanitizeSvg } from '@devvit/shared-types/sanitizeSvg.js';
|
|
9
|
+
import { parseDataUrl, isAcceptableDataUrlMimeType } from '@devvit/shared-types/imageUtil.js';
|
|
10
10
|
export function classMap(classInfo, forceString) {
|
|
11
11
|
const { getType } = getTemplateRenderingStrategy();
|
|
12
12
|
if (getType() === 'client' && forceString !== true) {
|
|
@@ -73,30 +73,6 @@ export function sanitizeStyleInfo(styleInfo) {
|
|
|
73
73
|
}
|
|
74
74
|
return styleInfo;
|
|
75
75
|
}
|
|
76
|
-
const DATA_URL_REGEX =
|
|
77
|
-
// eslint-disable-next-line security/detect-unsafe-regex
|
|
78
|
-
/^data:([a-zA-Z]+\/[a-zA-Z0-9.+_-]+)?(;charset=[a-zA-Z0-9._+-]+)?(;base64)?,(.*)/;
|
|
79
|
-
function preprocessDataUrl(input) {
|
|
80
|
-
/**
|
|
81
|
-
* This can be submitted to us as multi-line and that will break the parser
|
|
82
|
-
* so we remove all newlines here
|
|
83
|
-
*/
|
|
84
|
-
return input.trim().replace(/[\r\n]+/g, '');
|
|
85
|
-
}
|
|
86
|
-
export function isDataUrl(input) {
|
|
87
|
-
return !!preprocessDataUrl(input).match(DATA_URL_REGEX);
|
|
88
|
-
}
|
|
89
|
-
export function parseDataUrl(dataUrl) {
|
|
90
|
-
const matches = DATA_URL_REGEX.exec(preprocessDataUrl(dataUrl));
|
|
91
|
-
if (!matches)
|
|
92
|
-
return null;
|
|
93
|
-
return {
|
|
94
|
-
mimeType: matches[1],
|
|
95
|
-
charset: matches[2]?.split('=')[1], // Extract charset without ';charset='
|
|
96
|
-
isBase64: !!matches[3],
|
|
97
|
-
data: matches[4].trim(),
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
76
|
/**
|
|
101
77
|
* Only supports SVG elements!
|
|
102
78
|
*/
|
|
@@ -148,31 +124,6 @@ export function sanitizeDataUrl(dataUrl) {
|
|
|
148
124
|
return undefined;
|
|
149
125
|
}
|
|
150
126
|
}
|
|
151
|
-
function isAcceptableDataUrlMimeType(mimeType) {
|
|
152
|
-
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#image_types
|
|
153
|
-
const ACCEPTABLE_MIME_TYPES = ['image/svg+xml'];
|
|
154
|
-
return ACCEPTABLE_MIME_TYPES.includes(mimeType);
|
|
155
|
-
}
|
|
156
|
-
export function isAcceptableDataUrl(maybeDataUrl) {
|
|
157
|
-
const parsedDataUrl = parseDataUrl(maybeDataUrl);
|
|
158
|
-
if (!parsedDataUrl?.mimeType)
|
|
159
|
-
return false;
|
|
160
|
-
return isAcceptableDataUrlMimeType(parsedDataUrl.mimeType);
|
|
161
|
-
}
|
|
162
|
-
export function isValidImageURL(imageUrl) {
|
|
163
|
-
try {
|
|
164
|
-
if (isAcceptableDataUrl(imageUrl))
|
|
165
|
-
return true;
|
|
166
|
-
// The second "base" param helps to handle relative paths to local files
|
|
167
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters
|
|
168
|
-
const hostName = new URL(imageUrl, `https://i.${REDD_IT}`)?.hostname;
|
|
169
|
-
const tld = hostName.split('.').slice(-2).join('.');
|
|
170
|
-
return Boolean(tld) && VerifiedImageHosts.includes(tld);
|
|
171
|
-
}
|
|
172
|
-
catch (_) {
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
127
|
/**
|
|
177
128
|
* Returns a BlockSizes object either directly from the block or constructs
|
|
178
129
|
* one from the legacy `size` field
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devvit-custom-post.d.ts","sourceRoot":"","sources":["../../library/src/client/devvit-custom-post.ts"],"names":[],"mappings":"AAAA,OAAO,kEAAkE,CAAC;AAE1E,OAAO,KAAK,EAEV,WAAW,EAGX,MAAM,EAGN,YAAY,EACZ,QAAQ,EAER,kBAAkB,EAClB,MAAM,EACN,OAAO,EAER,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAOL,aAAa,EAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,eAAe,EAChB,MAAM,kDAAkD,CAAC;AAM1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAQ,MAAM,KAAK,CAAC;AASvD,OAAO,gDAAgD,CAAC;AACxD,OAAO,+CAA+C,CAAC;AACvD,OAAO,8BAA8B,CAAC;AAEtC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;IACD,UAAU,mBAAmB;QAC3B,sBAAsB,EAAE,uBAAuB,CAAC;QAChD,kBAAkB,EAAE,mBAAmB,CAAC;QACxC,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAAC,GAAG;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE,CAAC;QACjF,oBAAoB,EAAE,qBAAqB,CAAC;KAC7C;CACF;AAED,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAC1D,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC,sBAAsB,CAAC,GAAG;IAC7E,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,kBAAkB,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC;AAClG,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AACvD,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,oBAAoB,CAAC,GAAG;IACzE,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAiBF;;;;;;GAMG;AACH,qBACa,gBAAiB,SAAQ,UAAU;;IAC9C,iEAAiE;IACjC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,gBAAgB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAEzE,qBAAqB,EAAE,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"devvit-custom-post.d.ts","sourceRoot":"","sources":["../../library/src/client/devvit-custom-post.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,8 @@ let DevvitCustomPost = class DevvitCustomPost extends LitElement {
|
|
|
53
53
|
super();
|
|
54
54
|
_DevvitCustomPost_instances.add(this);
|
|
55
55
|
this.useExperimentalBlocks = false;
|
|
56
|
+
// to-do: don't use attributes initialized to true. They cannot be passed by
|
|
57
|
+
// attributes.
|
|
56
58
|
this.useSandbox = true;
|
|
57
59
|
_DevvitCustomPost_appState.set(this, {});
|
|
58
60
|
_DevvitCustomPost_customPostActor.set(this, void 0);
|
|
@@ -62,7 +64,8 @@ let DevvitCustomPost = class DevvitCustomPost extends LitElement {
|
|
|
62
64
|
_DevvitCustomPost_localClient.set(this, void 0);
|
|
63
65
|
_DevvitCustomPost_rerenderTimeout.set(this, void 0);
|
|
64
66
|
_DevvitCustomPost_rootHeight.set(this, void 0);
|
|
65
|
-
// No concurrency is used to enforce order.
|
|
67
|
+
// No concurrency is used to enforce order. Priority is used to allow server
|
|
68
|
+
// responses to jump to the front when received.
|
|
66
69
|
_DevvitCustomPost_rpcQueue.set(this, new PQueue({ concurrency: 1 }));
|
|
67
70
|
_DevvitCustomPost_uiEventHandlerActor.set(this, void 0);
|
|
68
71
|
_DevvitCustomPost_handleUserAction.set(this, async (event) => {
|
|
@@ -127,18 +130,22 @@ let DevvitCustomPost = class DevvitCustomPost extends LitElement {
|
|
|
127
130
|
</div>`;
|
|
128
131
|
}
|
|
129
132
|
async willUpdate(props) {
|
|
130
|
-
if (props.has('localRuntimeCode')
|
|
133
|
+
if (props.has('localRuntimeCode') || props.has('bundle') || props.has('useSandbox')) {
|
|
134
|
+
// The runtime or the bundle has changed. Reset.
|
|
131
135
|
__classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.quit();
|
|
136
|
+
__classPrivateFieldGet(this, _DevvitCustomPost_rpcQueue, "f").clear();
|
|
137
|
+
if (__classPrivateFieldGet(this, _DevvitCustomPost_rerenderTimeout, "f") != null)
|
|
138
|
+
clearTimeout(__classPrivateFieldGet(this, _DevvitCustomPost_rerenderTimeout, "f"));
|
|
139
|
+
__classPrivateFieldSet(this, _DevvitCustomPost_rerenderTimeout, undefined, "f");
|
|
140
|
+
}
|
|
141
|
+
if (props.has('localRuntimeCode') && this.localRuntimeCode) {
|
|
132
142
|
__classPrivateFieldSet(this, _DevvitCustomPost_localClient, new BrowserLiteClient(this.localRuntimeCode, (type, err) => __classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_bubble).call(this, 'devvit-ui-error', { type, err }), { callback: __classPrivateFieldGet(this, _DevvitCustomPost_onPluginCall, "f"), plugins: [RealtimeDefinition.fullName] }), "f");
|
|
133
143
|
}
|
|
134
|
-
|
|
135
|
-
if (actorRefChanged) {
|
|
144
|
+
if (props.has('actorRef')) {
|
|
136
145
|
__classPrivateFieldSet(this, _DevvitCustomPost_customPostActor, this.actorRef?.As(CustomPostDefinition), "f");
|
|
137
146
|
__classPrivateFieldSet(this, _DevvitCustomPost_uiEventHandlerActor, this.actorRef?.As(UIEventHandlerDefinition), "f");
|
|
138
147
|
}
|
|
139
|
-
if (props.has('bundle') || props.has('useSandbox'))
|
|
140
|
-
__classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.quit();
|
|
141
|
-
if ((this.actorRef && (actorRefChanged || props.has('bundle'))) || props.has('useSandbox')) {
|
|
148
|
+
if (props.has('actorRef') || props.has('bundle') || props.has('useSandbox')) {
|
|
142
149
|
if (this.bundle) {
|
|
143
150
|
// offline/online, defer initialRender for offline client
|
|
144
151
|
try {
|
|
@@ -148,6 +155,9 @@ let DevvitCustomPost = class DevvitCustomPost extends LitElement {
|
|
|
148
155
|
__classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_bubble).call(this, 'devvit-ui-error', { type: 'Error', err });
|
|
149
156
|
throw err;
|
|
150
157
|
}
|
|
158
|
+
// No remote runtime. Queue initial render.
|
|
159
|
+
if (!this.actorRef)
|
|
160
|
+
__classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_initialRender).call(this);
|
|
151
161
|
}
|
|
152
162
|
else if ((this.bundle && props.has('bundle')) || !__classPrivateFieldGet(this, _DevvitCustomPost_hasInitialRender, "f")) {
|
|
153
163
|
// online only
|
|
@@ -223,7 +233,7 @@ _DevvitCustomPost_processEvent = async function _DevvitCustomPost_processEvent(e
|
|
|
223
233
|
call = (await __classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.call('HandleUIEvent', req, this.metadata));
|
|
224
234
|
}
|
|
225
235
|
catch (err) {
|
|
226
|
-
if (!isCircuitBreaker(err) && __classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.ready) {
|
|
236
|
+
if ((!isCircuitBreaker(err) && __classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.ready) || !__classPrivateFieldGet(this, _DevvitCustomPost_uiEventHandlerActor, "f")) {
|
|
227
237
|
console.error(err);
|
|
228
238
|
__classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_bubble).call(this, 'devvit-ui-error', { err, type: 'Error' });
|
|
229
239
|
}
|
|
@@ -241,15 +251,14 @@ _DevvitCustomPost_processEvent = async function _DevvitCustomPost_processEvent(e
|
|
|
241
251
|
}
|
|
242
252
|
}
|
|
243
253
|
if (call) {
|
|
244
|
-
const res = await call;
|
|
245
254
|
// Can only change state on the main queue.
|
|
246
255
|
if (!ev.queue) {
|
|
247
|
-
__classPrivateFieldSet(this, _DevvitCustomPost_appState,
|
|
256
|
+
__classPrivateFieldSet(this, _DevvitCustomPost_appState, call.state ?? {}, "f");
|
|
248
257
|
}
|
|
249
258
|
const renderType = ev.realtimeEvent
|
|
250
259
|
? BlockRenderEventType.RENDER_EFFECT_EVENT
|
|
251
260
|
: BlockRenderEventType.RENDER_USER_ACTION;
|
|
252
|
-
await __classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_handleEffects).call(this, renderType,
|
|
261
|
+
await __classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_handleEffects).call(this, renderType, call.effects);
|
|
253
262
|
}
|
|
254
263
|
};
|
|
255
264
|
_DevvitCustomPost_queueRenderPost = function _DevvitCustomPost_queueRenderPost(req, circuitBreak) {
|
|
@@ -277,7 +286,7 @@ _DevvitCustomPost_renderPost = async function _DevvitCustomPost_renderPost(req,
|
|
|
277
286
|
}
|
|
278
287
|
else {
|
|
279
288
|
// Render now.
|
|
280
|
-
if (!circuitBreak && __classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.ready) {
|
|
289
|
+
if ((!circuitBreak || !__classPrivateFieldGet(this, _DevvitCustomPost_customPostActor, "f")) && __classPrivateFieldGet(this, _DevvitCustomPost_localClient, "f")?.ready) {
|
|
281
290
|
__classPrivateFieldGet(this, _DevvitCustomPost_instances, "m", _DevvitCustomPost_bubble).call(this, 'devvit-ui-error', { err, type: 'Error' });
|
|
282
291
|
console.error(err);
|
|
283
292
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devvit/ui-renderer",
|
|
3
|
-
"version": "0.10.15-next-2024-02-
|
|
3
|
+
"version": "0.10.15-next-2024-02-15-ea5e1b95f.0",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -54,10 +54,10 @@
|
|
|
54
54
|
},
|
|
55
55
|
"types": "./index.d.ts",
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@devvit/protos": "0.10.15-next-2024-02-
|
|
58
|
-
"@devvit/runtime-lite": "0.10.15-next-2024-02-
|
|
59
|
-
"@devvit/runtimes": "0.10.15-next-2024-02-
|
|
60
|
-
"@devvit/shared-types": "0.10.15-next-2024-02-
|
|
57
|
+
"@devvit/protos": "0.10.15-next-2024-02-15-ea5e1b95f.0",
|
|
58
|
+
"@devvit/runtime-lite": "0.10.15-next-2024-02-15-ea5e1b95f.0",
|
|
59
|
+
"@devvit/runtimes": "0.10.15-next-2024-02-15-ea5e1b95f.0",
|
|
60
|
+
"@devvit/shared-types": "0.10.15-next-2024-02-15-ea5e1b95f.0",
|
|
61
61
|
"@dotlottie/player-component": "2.7.2",
|
|
62
62
|
"p-queue": "7.3.4",
|
|
63
63
|
"rxjs": "7.5.7"
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"devDependencies": {
|
|
85
85
|
"@devvit/eslint-config": "0.10.14",
|
|
86
86
|
"@devvit/repo-tools": "0.10.14",
|
|
87
|
-
"@devvit/tsconfig": "0.10.15-next-2024-02-
|
|
87
|
+
"@devvit/tsconfig": "0.10.15-next-2024-02-15-ea5e1b95f.0",
|
|
88
88
|
"@lit-labs/ssr": "^2.2.3",
|
|
89
89
|
"@lit/localize": "0.11.4",
|
|
90
90
|
"@open-wc/testing-helpers": "2.3.0",
|
|
@@ -116,5 +116,5 @@
|
|
|
116
116
|
"directory": "dist"
|
|
117
117
|
},
|
|
118
118
|
"source": "./src/index.ts",
|
|
119
|
-
"gitHead": "
|
|
119
|
+
"gitHead": "48cd25b0170f2b5a269f4bab901c444b78fae5a5"
|
|
120
120
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare const REDD_IT = "redd.it";
|
|
2
|
-
export declare const REDDIT_STATIC = "redditstatic.com";
|
|
3
|
-
export declare const REDDIT_MEDIA = "redditmedia.com";
|
|
4
|
-
export declare const SNOO_DEV = "snoo.dev";
|
|
5
|
-
export declare const VerifiedPublicImageHosts: string[];
|
|
6
|
-
export declare const VerifiedImageHosts: string[];
|
|
7
|
-
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../library/src/blocks/templates/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAC9C,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,wBAAwB,UAAyC,CAAC;AAC/E,eAAO,MAAM,kBAAkB,UAAmD,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Only the following domains are approved: redd.it, redditstatic.com, redditmedia.com, or snoo.dev
|
|
2
|
-
export const REDD_IT = 'redd.it';
|
|
3
|
-
export const REDDIT_STATIC = 'redditstatic.com';
|
|
4
|
-
export const REDDIT_MEDIA = 'redditmedia.com';
|
|
5
|
-
export const SNOO_DEV = 'snoo.dev';
|
|
6
|
-
export const VerifiedPublicImageHosts = [REDD_IT, REDDIT_STATIC, REDDIT_MEDIA];
|
|
7
|
-
export const VerifiedImageHosts = [SNOO_DEV, REDD_IT, REDDIT_STATIC, REDDIT_MEDIA];
|