Search code examples
javascriptangulartypescriptionic-frameworkcapacitor

Window Open ignored on promise


I'm trying to redirect a user to twitter if they choose to. For that I use window.open but it just ignores that instruction. It works fine on other pages but in this function it's just not working. Any suggestions?

answerQuestion() {

        if (!this.isAnswerValid()) {
            this.presentToast('Answer must be between 1 and 140 characters')
            return
        }

        this.loading.present()
        this.questionsService.answerQuestion(this.question, this.answerText, this.imageURL)
        .then(res => {
            if (res) {
                if (this.twitter) {
                    let q = this.question.question
                    if (q.length > 100) {
                        q = q.substring(0, 101)
                    }
    
                    let a = this.answerText
                    if (a.length > 100) {
                        a = a.substring(0, 101)
                    }
                    const url = 'https://nonicapp.web.app/user/' + this.auth.user?.username
                    const tweet = q + " - " + a + " "
                    window.open('https://twitter.com/intent/tweet?text=' + tweet + '&hashtags=nonic&url=' + url, '_system')
                }
                this.router.navigateByUrl('/inbox', { replaceUrl: true });
            } else {
                this.presentToast('Something went wrong, please try again.')
            }
        })
        .catch(err => {
            console.warn(err)
            this.presentToast('Something went wrong, please try again.')
        })
        .finally(() => {
            this.loading.dismiss()
        })
    }

Solution

  • I also had some problems with window.open, so i started using Browser capacitor plugin

    It's quite simple

    import { Browser } from '@capacitor/browser';
    
    ... 
    
    async openUrl(url) {
        await Browser.open({ url: url });
    };