Skip to content

feat: Shell integration with external bridge container apps#3644

Draft
ecnivtwelve wants to merge 18 commits intomasterfrom
feat/shell-release
Draft

feat: Shell integration with external bridge container apps#3644
ecnivtwelve wants to merge 18 commits intomasterfrom
feat/shell-release

Conversation

@ecnivtwelve
Copy link
Copy Markdown

Context

Shell containers (such as LaSuite Docs) can call controller apps (that runs inside them) to serve as a pilot to the embedded app.

Note

LaSuite Docs needs cozy/cozy-lasuite-docs#6 to be compatible with this PR

Changes

Drive (running inside an iframe) can be used as a file manager, will be able to :

  • Open files into embed
  • Sync opened path between embed and Drive
  • Know if running in a shell via Shell context
    • UI changes when running in shell

@bundlemon
Copy link
Copy Markdown

bundlemon bot commented Dec 1, 2025

BundleMon

Files updated (2)
Status Path Size Limits
static/js/main.(hash).js
161.12KB (+557B +0.34%) -
public/static/js/public.(hash).js
134.28KB (+183B +0.13%) -
Unchanged files (19)
Status Path Size Limits
static/js/(chunkId).(hash).js
971.02KB -
public/static/js/(chunkId).(hash).js
907.03KB -
static/js/cozy.(hash).js
905.21KB -
public/static/js/cozy.(hash).js
770.71KB -
(hash).js
336.11KB -
public/(hash).js
336.11KB -
services/qualificationMigration.js
281.6KB -
services/dacc.js
261.55KB -
public/static/js/lib-react.(hash).js
39.24KB -
static/js/lib-react.(hash).js
39.24KB -
public/static/css/cozy.(hash).css
33.65KB -
static/css/cozy.(hash).css
33.65KB -
public/static/js/lib-router.(hash).js
21.86KB -
static/js/lib-router.(hash).js
21.86KB -
static/css/main.(hash).css
16.9KB -
public/static/css/public.(hash).css
6.61KB -
manifest.webapp
3.04KB -
index.html
687B -
assets/manifest.json
185B -

Total files change +739B +0.01%

Groups updated (1)
Status Path Size Limits
**/*.js
6.93MB (+740B +0.01%) -
Unchanged groups (2)
Status Path Size Limits
**/*.{png,svg,ico}
2.19MB -
**/*.css
127.66KB -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history


useEffect(() => {
if (window.top) {
window.top.postMessage('loaded', '*')
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

who is the window.top here?

style.type = 'text/css'
style.appendChild(document.createTextNode(CSS))
document.head.appendChild(style)
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be done by a new entry / target.

const openFileInParent = (file: File): void => {
if ('metadata' in file && window.top) {
const id = file.metadata.externalId || ''
window.top.postMessage('openFile:' + id, '*')
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who is listening / definning this openFile ?

@Crash--
Copy link
Copy Markdown
Contributor

Crash-- commented Dec 1, 2025

In my opinion we'll always block iframe on Drive. So maybe we should use something like intent to do it properly even if I'm not a big fan of that.

@ecnivtwelve ecnivtwelve marked this pull request as draft December 1, 2025 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants