Custom UI modals, data egress updates, and linting fixes

:warning: Deprecation of data egress not declared in app manifest

Starting 14 July 2021, we’re requiring newly deployed apps to configure runtime egress permissions
in their app manifest. After this date, apps without runtime egress permissions configured will not
work as expected.

To support this, we’ve added a warning message that displays for apps without runtime egress permissions.

See Runtime egress permissions and External permissions for more details.

:sparkles: Modal API in Forge bridge version 1.5.0

The Modal API enables your custom UI app to open a modal dialog with a specified resource.

Run npm install @forge/bridge@latest in your resource directory to install the latest version of Forge bridge.

:hammer_and_wrench: Updated in Forge CLI version 1.4.1

Changes to egress permissions are now reflected while tunnelling.

:bug: Bug fixes in Forge CLI version 1.4.1

This release includes:

  • A fix for forge lint permission checking of route tagged template calls.
  • Egress validation updated to allow any paths or queries under specified domains.

Run npm install -g @forge/cli@latest on the command line to install the latest CLI version.

5 Likes

Hai @pgleeson The modal in forge custom UI app have a lengthy issue that mentioned in this issue.

Also i created a seperate app to create modal in custom UI app. Is any other way available to open modal dialog within single app? If no then how can i add resolver function to the modal(seperate app) in descriptor file?

Heya @SuryaA sorry about the late reply.

Is any other way available to open modal dialog within single app?

Using the modal API provided in @forge/bridge is the best way to open modals in apps.

If no then how can i add resolver function to the modal(seperate app) in descriptor file?

Calling invoke from the modal resource will execute the resolver defined for the extension module. Given a manifest that looks like:

modules:
  jira:issuePanel:
    - key: hello-world-panel
      resource: example-resource
      resolver:
        function: issue-panel-resolver
      title: Hello world!
      icon: https://developer.atlassian.com/platform/forge/images/issue-panel-icon.svg
resources:
  - key: example-resource
    path: static/hello-world/build
  - key: example-modal
    path: static/hello-modal/build
function:
  - key: issue-panel-resolver
    handler: index.handler

If example-resource opens a modal with the example-modal resource, they will both be able to call resolvers defined in the issue-panel-resolver function.

Does that information help?