コード例 #1
0
ファイル: Chat.razor.cs プロジェクト: w8api/WhatsAppClone
        protected async override Task OnAfterRenderAsync(bool firstRender)
        {
            await base.OnAfterRenderAsync(firstRender);

            if (firstRender)
            {
                #region Check the accountid

                var accountId = await BrowserInterop.LocalStorageGet <Guid?>("AccountId");

                if (accountId.GetValueOrDefault() == Guid.Empty)
                {
                    NavigationManager.NavigateTo("/");
                    return;
                }

                _accountId = accountId.Value;

                #endregion

                OnMessageReceivedEvent += ChatBase_OnMessageReceive;
                await BindChats();

                StateHasChanged();
            }
        }
コード例 #2
0
ファイル: Chat.razor.cs プロジェクト: w8api/WhatsAppClone
        protected async Task OnMessageKeyDown(KeyboardEventArgs e)
        {
            if (!IsSendingMessage && e.Code == "Enter")
            {
                if (!string.IsNullOrWhiteSpace(Message))
                {
                    IsSendingMessage = true;

                    var response = await HttpClient.PostAsJsonAsync($"whatsapp/messages/accounts/{_accountId}/{SelectedChat.SerializedId}/send-text", new { Text = Message });

                    if (response.IsSuccessStatusCode)
                    {
                        Message = null;
                        await LoadMessagesFromSelectedChat();

                        IsSendingMessage = false;
                        StateHasChanged();

                        await textbox.FocusAsync();
                    }
                    else
                    {
                        await BrowserInterop.Alert($"error sending the message: {response.ReasonPhrase}");
                    }
                }
            }
        }
コード例 #3
0
        protected async override Task OnAfterRenderAsync(bool firstRender)
        {
            await base.OnAfterRenderAsync(firstRender);

            if (firstRender)
            {
                var accountId = await BrowserInterop.LocalStorageGet <Guid?>("AccountId");

                if (accountId.GetValueOrDefault() != Guid.Empty)
                {
                    NavigateToChat();
                    return;
                }

                OnQrCodeReceivedEvent += AuthenticationBase_OnQrCodeReceivedEvent;
                OnAuthenticatedEvent  += AuthenticationBase_OnAuthenticatedEvent;

                // initialize a new account if there isn't on localstorage above
                if (_accountId == Guid.Empty)
                {
                    _accountId = Guid.NewGuid();
                }

                await HttpClient.PostAsync($"account/{_accountId}", null);
            }
        }
コード例 #4
0
 static VtsLog()
 {
     BrowserInterop.vtsLogSetMaskCode((uint)LogLevel.default_);
     Util.CheckInterop();
     BrowserInterop.vtsLogSetFile("vts-unity.log");
     Util.CheckInterop();
     Util.Log(LogLevel.info4, "Initialized VTS logging in Unity");
 }
コード例 #5
0
        public HomeView(BrowserInterop browserInterop, ILoginHandler loginHandler, IConnectApiHandler connMan)
        {
            InitializeComponent();
            _loginHandler = loginHandler;

            WebControl.LifeSpanHandler = new LifeSpanHandler();

            WebControl.RegisterJsObject("six_client", new Handler(browserInterop, connMan, HandleLogin));

            this.WhenActivated(d => {
                d(this.WhenAnyValue(x => x.ViewModel).BindTo(this, v => v.DataContext));
                d(this.WhenAnyValue(x => x.ViewModel)
                  .Skip(1)
                  .Subscribe(vm => {
                    d(WebControl.WhenAnyValue(x => x.IsLoading).Subscribe(x => {
                        ViewModel.ProgressState.Active = x;
                        ViewModel.CanGoBack            = WebControl.CanGoBack;
                        ViewModel.CanGoForward         = WebControl.CanGoForward;
                    }));
                    d(vm.Navigate.Subscribe(x => {
                        switch (x)
                        {
                        case HomeViewModel.NavigateMode.GoBack: {
                            WebControl.BackCommand.Execute(null);
                            break;
                        }

                        case HomeViewModel.NavigateMode.Abort: {
                            WebControl.Stop();
                            break;
                        }

                        case HomeViewModel.NavigateMode.GoForward: {
                            WebControl.ForwardCommand.Execute(null);
                            break;
                        }

                        case HomeViewModel.NavigateMode.Reload: {
                            WebControl.Reload(false);
                            break;
                        }
                        }
                    }));
                }));

                d(this.WhenAnyValue(v => v.WebControl.IsLoading)
                  .Skip(1)
                  .Subscribe(x => ViewModel.IsNavigating = x));
            });

            CommandBindings.Add(new CommandBinding(BrowserView.CopyToClipboard, OnCopyToClipboard, CanCopyToClipboard));
            CommandBindings.Add(new CommandBinding(BrowserView.OpenInSystemBrowser, OnOpenInSystemBrowser,
                                                   CanOpenInSystemBrowser));
        }
コード例 #6
0
 public Handler(BrowserInterop interop, IConnectApiHandler connMan, Action <AccessInfo> handleLogin)
 {
     _interop     = interop;
     _connMan     = connMan;
     _handleLogin = handleLogin;
 }
コード例 #7
0
        private async Task AuthenticationBase_OnAuthenticatedEvent(AuthenticatedDto arg)
        {
            await BrowserInterop.LocalStorageSet("AccountId", arg.AccountId);

            NavigateToChat();
        }