Adds a first-run wallet and account creator option for noobs. If they select the "create a default wallet" option, they are jumped to the name + password screen for wallet creation, and a new account is generated for them named "Account 1". This leapfrogs the problem of users having to know what is going on with the blockchain and wallet at all before getting started. #18 #19 Reviewed-on: #24 Reviewed-by: Ulf Wiger <ulfwiger@qpq.swiss> Co-authored-by: Craig Everett <zxq9@zxq9.com> Co-committed-by: Craig Everett <zxq9@zxq9.com>
73 lines
2.1 KiB
Erlang
73 lines
2.1 KiB
Erlang
%%% @doc
|
|
%%% GajuDesk
|
|
%%% @end
|
|
|
|
-module(gajudesk).
|
|
-vsn("0.7.0").
|
|
-behavior(application).
|
|
-author("Craig Everett <craigeverett@qpq.swiss>").
|
|
-copyright("QPQ AG <info@qpq.swiss>").
|
|
-license("GPL-3.0-or-later").
|
|
|
|
-export([ts/0]).
|
|
-export([start/2, stop/1]).
|
|
|
|
-export_type([id/0, key/0, poa/0, tx/0, ts/0, key_txs/0]).
|
|
|
|
-include("$zx_include/zx_logger.hrl").
|
|
-include("gd.hrl").
|
|
|
|
|
|
-type id() :: binary().
|
|
-type key() :: #key{}.
|
|
-type poa() :: #poa{}.
|
|
-type tx() :: #tx{}.
|
|
-type ts() :: integer().
|
|
-type chain_txs() :: #{ChainID :: binary() := [tx()]}.
|
|
-type key_txs() :: #{id() := {{LastCheck :: ts(), mdw | node}, chain_txs()}}.
|
|
|
|
|
|
ts() ->
|
|
erlang:system_time(nanosecond).
|
|
|
|
|
|
-spec start(normal, Args :: term()) -> {ok, pid()}.
|
|
%% @private
|
|
%% Called by OTP to kick things off. This is for the use of the "application" part of
|
|
%% OTP, not to be called by user code.
|
|
%%
|
|
%% NOTE:
|
|
%% The commented out second argument would come from ebin/gajudesk.app's 'mod'
|
|
%% section, which is difficult to define dynamically so is not used by default
|
|
%% here (if you need this, you already know how to change it).
|
|
%%
|
|
%% Optional runtime arguments passed in at start time can be obtained by calling
|
|
%% zx_daemon:argv/0 anywhere in the body of the program.
|
|
%%
|
|
%% See: http://erlang.org/doc/apps/kernel/application.html
|
|
|
|
start(normal, _Args) ->
|
|
ok =
|
|
case net_kernel:stop() of
|
|
ok ->
|
|
log(info, "SAFE: This node is running standalone.");
|
|
{error, not_found} ->
|
|
log(warning, "SAFETY: Distribution has been disabled on this node.");
|
|
{error, not_allowed} ->
|
|
ok = tell(error, "DANGER! This node is in distributed mode!"),
|
|
init:stop(1)
|
|
end,
|
|
ok = application:ensure_started(hakuzaru),
|
|
ok = application:ensure_started(zxwidgets),
|
|
ok = application:ensure_started(sophia),
|
|
gd_sup:start_link().
|
|
|
|
|
|
-spec stop(term()) -> ok.
|
|
%% @private
|
|
%% Similar to start/2 above, this is to be called by the "application" part of OTP,
|
|
%% not client code. Causes a (hopefully graceful) shutdown of the application.
|
|
|
|
stop(_State) ->
|
|
ok.
|