main_wails.go raw

   1  //go:build wails
   2  // +build wails
   3  
   4  package main
   5  
   6  import (
   7  	"context"
   8  	"embed"
   9  	"net"
  10  
  11  	"github.com/getAlby/hub/logger"
  12  	"github.com/getAlby/hub/service"
  13  	"github.com/getAlby/hub/wails"
  14  	log "github.com/sirupsen/logrus"
  15  )
  16  
  17  //go:embed all:frontend/dist
  18  var assets embed.FS
  19  
  20  //go:embed appicon.png
  21  var appIcon []byte
  22  
  23  func main() {
  24  	// Get a port lock on a rare port to prevent the app running twice
  25  	listener, err := net.Listen("tcp", "0.0.0.0:21420")
  26  	if err != nil {
  27  		log.Println("Another instance of Alby Hub is already running.")
  28  		return
  29  	}
  30  	defer listener.Close()
  31  
  32  	log.Info("Alby Hub starting in WAILS mode")
  33  	ctx, cancel := context.WithCancel(context.Background())
  34  	svc, err := service.NewService(ctx)
  35  	if err != nil {
  36  		log.WithError(err).Fatal("Failed to create service")
  37  		return
  38  	}
  39  
  40  	app := wails.NewApp(svc)
  41  	wails.LaunchWailsApp(app, assets, appIcon)
  42  	logger.Logger.Info("Wails app exited")
  43  
  44  	logger.Logger.Info("Cancelling service context...")
  45  	// cancel the service context
  46  	cancel()
  47  	svc.Shutdown()
  48  	logger.Logger.Info("Service exited")
  49  	logger.Logger.Info("Alby Hub needs to stay online to send and receive transactions. Channels may be closed if your hub stays offline for an extended period of time.")
  50  }
  51