Function repeter 2 fois

Jessy_lg27 Messages postés 13 Statut Membre -  
Jessy_lg27 Messages postés 13 Statut Membre -

bonjour,

// This will use the demo backend if you open index.html locally via file://, otherwise your server will be used
let backendUrl = location.protocol === 'file:' ? "https://tiktok-chat-reader.zerody.one/" : undefined;
let connection = new TikTokIOConnection(backendUrl);

// Counter
let viewerCount = 0;
let likeCount = 0;
let diamondsCount = 0;
let pv = 10;

// These settings are defined by obs.html
if (!window.settings) window.settings = {};

$(document).ready(() => {
    $('#connectButton').click(connect);
    $('#uniqueIdInput').on('keyup', function (e) {
        if (e.key === 'Enter') {
            connect();
        }
    });

    if (window.settings.username) connect();
})

function connect() {
    let uniqueId = window.settings.username || $('#uniqueIdInput').val();
    if (uniqueId !== '') {

        $('#stateText').text('Connecting...');

        connection.connect(uniqueId, {
            enableExtendedGiftInfo: true
        }).then(state => {
            $('#stateText').text(`Connected to roomId ${state.roomId}`);

            // reset stats
            viewerCount = 0;
            likeCount = 0;
            diamondsCount = 0;
            updateRoomStats();

        }).catch(errorMessage => {
            $('#stateText').text(errorMessage);

            // schedule next try if obs username set
            if (window.settings.username) {
                setTimeout(() => {
                    connect(window.settings.username);
                }, 30000);
            }
        })

    } else {
        alert('no username entered');
    }
}

function test(data){
    if (data.giftName == 'Rose'){
        pv--;
        console.log(pv)
        $('#pv').html(`${pv} PV`)
        $('#bar').val(pv)
        // document.getElementById('animal').style.marginTop = "2%";
        //         setTimeout(() => {
        //             document.getElementById('animal').style.marginTop = "1%";
        //             var audio = new Audio('pig.wav');
    //audio.play();
     //           }, 50);
    }else if (data.giftName == 'TikTok'){
        pv--;
        $('#pv').html(`${pv} PV`)
        $('#bar').val(pv)
       // document.getElementById('animal').style.marginTop = "2%";
       // setTimeout(() => {
       // document.getElementById('animal').style.marginTop = "1%";
       // var audio = new Audio('pig.wav');
    // audio.play();
     //   }, 50);
    }
    
}


// Prevent Cross site scripting (XSS)
function sanitize(text) {
    return text.replace(/</g, '<')
}

function updateRoomStats() {
    $('#roomStats').html(`Viewers: <b>${viewerCount.toLocaleString()}</b> Likes: <b>${likeCount.toLocaleString()}</b> Earned Diamonds: <b>${diamondsCount.toLocaleString()}</b>`)
}

function generateUsernameLink(data) {
    return `<a class="usernamelink" href="https://www.tiktok.com/@${data.uniqueId}" target="_blank">${data.uniqueId}</a>`;
}

function isPendingStreak(data) {
    return data.giftType === 1 && !data.repeatEnd;
}

// viewer stats
connection.on('roomUser', (msg) => {
    if (typeof msg.viewerCount === 'number') {
        viewerCount = msg.viewerCount;
        updateRoomStats();
    }
})

// like stats
connection.on('like', (msg) => {
    if (typeof msg.totalLikeCount === 'number') {
        likeCount = msg.totalLikeCount;
        updateRoomStats();
    }

    if (window.settings.showLikes === "0") return;

    if (typeof msg.likeCount === 'number') {
    }
})

// Member join
let joinMsgDelay = 0;
connection.on('member', (msg) => {
    if (window.settings.showJoins === "0") return;

    let addDelay = 250;
    if (joinMsgDelay > 500) addDelay = 100;
    if (joinMsgDelay > 1000) addDelay = 0;

    joinMsgDelay += addDelay;

    setTimeout(() => {
        joinMsgDelay -= addDelay;
    }, joinMsgDelay);
})

// New chat comment received
connection.on('chat', (msg) => {
    if (window.settings.showChats === "0") return;
})

// New gift received
connection.on('gift', (data) => {
    if (!isPendingStreak(data) && data.diamondCount > 0) {
        diamondsCount += (data.diamondCount * data.repeatCount);
        updateRoomStats();
        test(data);
    }

    if (window.settings.showGifts === "0") return;
})

// share, follow
connection.on('social', (data) => {
    if (window.settings.showFollows === "0") return;

    let color = data.displayType.includes('follow') ? '#ff005e' : '#2fb816';
})

connection.on('streamEnd', () => {
    $('#stateText').text('Stream ended.');

    // schedule next try if obs username set
    if (window.settings.username) {
        setTimeout(() => {
            connect(window.settings.username);
        }, 30000);
    }
})

**je veux que la "function" test ce répete un fois**

en utilisent cette api c'est la premiere foix que je rencotre ce bug 

**j'obtiens j'obtiens la "function" en double **

la variable pv donc pv--; = a -2 aulieux de -1
 


Windows / Chrome 107.0.0.0

2 réponses

yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 

bonjour,

pourquoi ne pas l'appeler deux fois?

0
Jessy_lg27 Messages postés 13 Statut Membre 1
 

Pour que la fonction s'exécute correctement elle doit être appeler qu'une fois

Pour que la variable pv perde -1 et pas -2

Cordialement 

Jessy.L

0
yg_be Messages postés 24281 Statut Contributeur 1 584 > Jessy_lg27 Messages postés 13 Statut Membre
 

tu peux alors dupliquer la ligne pv--;

0
Jessy_lg27 Messages postés 13 Statut Membre 1 > yg_be Messages postés 24281 Statut Contributeur
 

Je ne souhaite pas avoir moins deux mais moins un mais ma function et exécuter deux fois par erreur  Alors que pourtant dans mon code je l'appelle qu'une fois

0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 

Bonjour,

Commence par remplacer la ligne de code :

 $('#connectButton').click(connect);

par

 $('#connectButton').click(function(){
    connect();
  });

Puis vide bien le cache de ton navigateur avant de reessayer.

Si le souci persiste, rajoute des console.log  dans ton code pour savoir quel code est exécuté exactement...


0
Jessy_lg27 Messages postés 13 Statut Membre 1
 

Merci de votre réponse mais sa ne marche toujours pas

0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > Jessy_lg27 Messages postés 13 Statut Membre
 

As-tu mis des console.log dans ton code ?

0
Jessy_lg27 Messages postés 13 Statut Membre 1 > jordane45 Messages postés 40050 Statut Modérateur
 

J'ai déjà mis des consoles log  La variable et bien soustraites de moins 1 mais elle s execute 2 fois donc moins 2

0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > Jessy_lg27 Messages postés 13 Statut Membre
 

As tu mis un console.log dans la fonction 

connection.on('gift'   
pour voir si elle n'est déclenchée qu'une seule fois ?

Puis un autre dans le IF de cette fonction ?

La soustraction se fait deux fois nous dis tu ..   les deux en même temps ou une au chargement de la page .. puis une autre ensuite suite à une action de ta part ?

0
Jessy_lg27 Messages postés 13 Statut Membre 1 > jordane45 Messages postés 40050 Statut Modérateur
 

Oui la condition gift et bien exécuté aussi deux fois, NonLa variable n'est pas soustraite Chargement de la page elle s'exécute de fois compte la condition est remplie

0