step-up-labs / firebase-database-dotnet

C# library for Firebase Realtime Database.
MIT License
668 stars 168 forks source link

Using firebaseAuth with dependency Injection #309

Closed eduardoagr closed 1 year ago

eduardoagr commented 1 year ago

I am using firebase with dependency injection

and I have errors

private readonly IFirebaseAuthClient _firebaseAuthClient;

        private bool isShowingRegister = false;

        public Command RegisterCommand { get; set; }

        public Command LoginCommand { get; set; }

        public Command SwitchViewsCommand { get; set; }

        public LocalUser User { get; set; }

        public Visibility RegisterVis { get; set; }

        public Visibility LoginVis { get; set; }

        public SignUpLoginWondowViewModel(IFirebaseAuthClient firebaseAuth) {
            _firebaseAuthClient = firebaseAuth;
            User = new LocalUser();
            User.PropertyChanged += (sender, args) => RegisterCommand?.RaiseCanExecuteChanged();
            RegisterCommand = new Command(RegisterAction, CanRegster);
            LoginCommand = new Command(LoginAction, CanLogin);
            SwitchViewsCommand = new Command(SwitchViews);

and the host

_host = Host.CreateDefaultBuilder()
            .ConfigureServices((context, services) => {

                string? FireDomain = context.Configuration.GetValue<string>("FIREBASE_DOMAIN");
                string? FireKey = context.Configuration.GetValue<string>("FIREBASE_KEY");

                var fireAuth = new FirebaseAuthConfig {
                    ApiKey = FireKey,
                    AuthDomain = FireDomain
                };

                services.AddSingleton<IFirebaseAuthClient>(new FirebaseAuthClient(fireAuth));
                services.AddSingleton((services) => new SignUpLoginWondow(services.GetRequiredService<IFirebaseAuthClient>()));

            })
            .Build();
    }

    protected override void OnStartup(StartupEventArgs e) {

        MainWindow = _host.Services.GetRequiredService<SignUpLoginWondow>();
        MainWindow.Show();
        base.OnStartup(e);
    }

When I start the app, I get System.NullReferenceException: 'Object reference not set to an instance of an object.' in here


PUblic SignUpLoginWondowViewModel Instance { get; set; }

        public SignUpLoginWondow(IFirebaseAuthClient firebaseAuthClient) {
            Instance = new SignUpLoginWondowViewModel(firebaseAuthClient);
            InitializeComponent();
            DataContext = Instance;