MCPcopy Create free account
hub / github.com/dailydotdev/apps / initializeFrame

Function initializeFrame

packages/extension/src/frame/controller.ts:86–157  ·  view source on GitHub ↗
({
  root,
  target,
  sendParentMessage,
  onEmbeddingEnabled,
}: {
  root: HTMLDivElement;
  target: URL;
  sendParentMessage: SendParentMessage;
  onEmbeddingEnabled: () => void;
})

Source from the content-addressed store, hash-verified

84};
85
86export const initializeFrame = async ({
87 root,
88 target,
89 sendParentMessage,
90 onEmbeddingEnabled,
91}: {
92 root: HTMLDivElement;
93 target: URL;
94 sendParentMessage: SendParentMessage;
95 onEmbeddingEnabled: () => void;
96}): Promise<void> => {
97 const hasPermissions = await hasFrameEmbeddingPermissions();
98
99 if (!hasPermissions) {
100 const onRequestPermission = async (): Promise<PermissionRequestOutcome> => {
101 try {
102 const granted = await requestFrameEmbeddingPermissions();
103
104 if (!granted) {
105 sendParentMessage(extensionSiteEmbedFrameEvent.Error, {
106 reason: 'permission-denied',
107 target: target.href,
108 });
109 return 'dismissed';
110 }
111
112 sendParentMessage(extensionSiteEmbedFrameEvent.ReloadRequested, {
113 target: target.href,
114 });
115
116 // After the optional permission prompt resolves, the fresh extension
117 // context is much more reliable for enabling the DNR session rule.
118 globalThis.setTimeout(() => {
119 browser.runtime.reload();
120 }, 100);
121
122 return 'granted';
123 } catch {
124 sendParentMessage(extensionSiteEmbedFrameEvent.Error, {
125 reason: 'permission-request-failed',
126 target: target.href,
127 });
128 return 'failed';
129 }
130 };
131
132 const onOptOut = () => {
133 sendParentMessage(extensionSiteEmbedFrameEvent.OptOutRequested, {
134 target: target.href,
135 });
136 };
137
138 renderPermissionPrompt({
139 root,
140 onRequestPermission,
141 onOptOut,
142 });
143

Callers 2

index.tsFile · 0.90
controller.spec.tsFile · 0.90

Calls 4

renderPermissionPromptFunction · 0.90
sendParentMessageFunction · 0.85
prepareEmbeddingFunction · 0.85

Tested by

no test coverage detected