Giter VIP home page Giter VIP logo

electron-deeplink's Introduction

MIT license ts glawson

electron-deeplink

Node module for Electron apps that sets the default handler for a given protocol (deep links) in both development and production environments.

This module was inspired due to the lack of protocol support when running non packaged apps on macOS (see app.setAsDefaultProtocolClient for explanation). This module provides full support for running and testing the given protocol in the development environment. It also provides the same protocol support for the production envronment. In other words, protocol management is completly controlled with this module.

Please Note

  • For Production: While electron-deeplink handles setting app.setAsDefaultProtocolClient, you still need to make sure setup the mac bundleId correctly for electron-builder or electron-forge.

Example App

A full working example can be found here

Installation

# If you use npm:
npm install electron-deeplink

# If you use yarn:
$ yarn add electron-deeplink

Usage

In main.js, include the electron-deeplink module and instantiate the Deeplink class towards to begining of main.js.

// main.js
const { app, BrowserWindow } = require('electron');
const { Deeplink } = require('electron-deeplink');
const isDev = require('electron-is-dev');

let mainWindow;
const protocol = isDev ? 'dev-app' : 'prod-app';
const deeplink = new Deeplink({ app, mainWindow, protocol, isDev });

Setup a watch on the deeplink 'received' event

// main.js
deeplink.on('received', (link) => {
    // do stuff here
});

API

creating an instance

const deeplink = new Deeplink([config]);

config

{
    // required
    // type: electron app
    app: [electron.app]

    // required
    // type: app.BrowserWindow
    // Reference to the apps main window
    mainWindow: [main window reference]

    // required
    // type: string
    // String representing the protocol to use. For production, this should be the same as the bundleId set in the build config.
    protocol: [protocol string]

    // optional, default: false
    // type: boolean
    // Represents the app environment
    isDev: boolean

    // optional, default: false
    // type: boolean
    // If true, outputs logging.  Uses electron-log, so files are appened/created for prod.
    debugLogging: boolean

    // optional, default: '/node_modules/electron/dist/Electron.app'
    // type: string
    // String representing the location of Electron relative to the app root.
    electronPath: [string]
}

events

// 'recieved'
// When a "deeplink" is recieved by the module, this event is emitted.

deeplink.on('received', (link) => {
    // do something here
});

Contributors

This repo uses semantic-release for versioning, which uses Angular Commit Message Conventions.

semantic-release is hooked up to CircleCI

electron-deeplink's People

Contributors

glawson avatar joelkang avatar rlingineni avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.