Revert "viewer#2413 Remove obsolete alert about expiring voice morphs"

This reverts commit 5c16ae1375.
Fix is correct, but should wait untill server sided fix gets deployed.
master
Andrey Kleshchev 2024-09-24 20:15:50 +03:00 committed by Andrey Kleshchev
parent a2e9a0caf3
commit cd8b0a4fc9
15 changed files with 119 additions and 0 deletions

View File

@ -13202,6 +13202,17 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>VoiceEffectExpiryWarningTime</key>
<map>
<key>Comment</key>
<string>How much notice to give of Voice Morph subscriptions expiry, in seconds.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>259200</integer>
</map>
<key>VoiceMorphingEnabled</key>
<map>
<key>Comment</key>

View File

@ -6458,6 +6458,7 @@ LLVivoxVoiceClient::voiceFontEntry::voiceFontEntry(LLUUID& id) :
mIsNew(false)
{
mExpiryTimer.stop();
mExpiryWarningTimer.stop();
}
LLVivoxVoiceClient::voiceFontEntry::~voiceFontEntry()
@ -6568,6 +6569,20 @@ void LLVivoxVoiceClient::addVoiceFont(const S32 font_index,
font->mExpiryTimer.start();
font->mExpiryTimer.setExpiryAt(expiration_date.secondsSinceEpoch() - VOICE_FONT_EXPIRY_INTERVAL);
// Set the warning timer to some interval before actual expiry.
S32 warning_time = gSavedSettings.getS32("VoiceEffectExpiryWarningTime");
if (warning_time != 0)
{
font->mExpiryWarningTimer.start();
F64 expiry_time = (expiration_date.secondsSinceEpoch() - (F64)warning_time);
font->mExpiryWarningTimer.setExpiryAt(expiry_time - VOICE_FONT_EXPIRY_INTERVAL);
}
else
{
// Disable the warning timer.
font->mExpiryWarningTimer.stop();
}
// Only flag new session fonts after the first time we have fetched the list.
if (mVoiceFontsReceived)
{
@ -6609,6 +6624,7 @@ void LLVivoxVoiceClient::expireVoiceFonts()
// than checking each font individually.
bool have_expired = false;
bool will_expire = false;
bool expired_in_use = false;
LLUUID current_effect = LLVoiceClient::instance().getVoiceEffectDefault();
@ -6618,6 +6634,7 @@ void LLVivoxVoiceClient::expireVoiceFonts()
{
voiceFontEntry* voice_font = iter->second;
LLFrameTimer& expiry_timer = voice_font->mExpiryTimer;
LLFrameTimer& warning_timer = voice_font->mExpiryWarningTimer;
// Check for expired voice fonts
if (expiry_timer.getStarted() && expiry_timer.hasExpired())
@ -6634,6 +6651,14 @@ void LLVivoxVoiceClient::expireVoiceFonts()
deleteVoiceFont(voice_font->mID);
have_expired = true;
}
// Check for voice fonts that will expire in less that the warning time
if (warning_timer.getStarted() && warning_timer.hasExpired())
{
LL_DEBUGS("VoiceFont") << "Voice Font " << voice_font->mName << " will expire soon." << LL_ENDL;
will_expire = true;
warning_timer.stop();
}
}
LLSD args;
@ -6655,6 +6680,15 @@ void LLVivoxVoiceClient::expireVoiceFonts()
// Refresh voice font lists in the UI.
notifyVoiceFontObservers();
}
// Give a warning notification if any voice fonts are due to expire.
if (will_expire)
{
S32Seconds seconds(gSavedSettings.getS32("VoiceEffectExpiryWarningTime"));
args["INTERVAL"] = llformat("%d", LLUnit<S32, LLUnits::Days>(seconds).value());
LLNotificationsUtil::add("VoiceEffectsWillExpire", args);
}
}
void LLVivoxVoiceClient::deleteVoiceFont(const LLUUID& id)

View File

@ -880,6 +880,7 @@ private:
bool mIsNew;
LLFrameTimer mExpiryTimer;
LLFrameTimer mExpiryWarningTimer;
};
bool mVoiceFontsReceived;

View File

@ -1572,6 +1572,10 @@ Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik p
</notification>
<notification name="VoiceEffectsExpiredInUse">
Den aktive stemme &quot;morph&quot; er udløbet og din normale stemme opsætning er genaktiveret.
[[URL] Click here] for at forny dit abbonnement.
</notification>
<notification name="VoiceEffectsWillExpire">
En eller flere af dine stemme &quot;morphs&quot; vil udløbe om mindre end [INTERVAL] dage.
[[URL] Click here] for at forny dit abbonnement.
</notification>
<notification name="VoiceEffectsNew">

View File

@ -2465,6 +2465,10 @@ Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice
<notification name="VoiceEffectsExpiredInUse">Das aktive Voice-Morph-Abo ist abgelaufen. Ihre normalen Voice-Einstellungen werden angewendet.
[[URL] Klicken Sie hier], um Ihr Abo zu erneuern.
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.</notification>
<notification name="VoiceEffectsWillExpire">Ein oder mehrere Ihrer Voice-Morph-Abos laufen in weniger als [INTERVAL] Tagen ab.
[[URL] Klicken Sie hier], um Ihr Abo zu erneuern.
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.</notification>
<notification name="VoiceEffectsNew">Neue Voice-Morph-Effekte sind erhältlich!</notification>
<notification name="Cannot enter parcel: not a group member">Nur Mitglieder einer bestimmten Gruppe dürfen diesen Bereich betreten.</notification>

View File

@ -8858,6 +8858,21 @@ If you are a Premium Member, [[PREMIUM_URL] click here] to receive your voice mo
<tag>voice</tag>
</notification>
<notification
icon="notify.tga"
name="VoiceEffectsWillExpire"
sound="UISndAlert"
persist="true"
type="notify">
<unique/>
One or more of your Voice Morphs will expire in less than [INTERVAL] days.
[[URL] Click here] to renew your subscription.
If you are a Premium Member, [[PREMIUM_URL] click here] to receive your voice morphing perk.
<tag>fail</tag>
<tag>voice</tag>
</notification>
<notification
icon="notify.tga"
name="VoiceEffectsNew"

View File

@ -2451,6 +2451,10 @@ Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio
<notification name="VoiceEffectsExpiredInUse">La transformación de voz activa ha caducado y se ha aplicado tu configuración de voz normal.
[[URL] Pulsa aquí] para renovar la suscripción.
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.</notification>
<notification name="VoiceEffectsWillExpire">Una o más de tus transformaciones de voz caducarán en menos de [INTERVAL] días.
[[URL] Pulsa aquí] para renovar la suscripción
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.</notification>
<notification name="VoiceEffectsNew">Están disponibles nuevas transformaciones de voz.</notification>
<notification name="Cannot enter parcel: not a group member">Sólo los miembros de un grupo determinado pueden visitar esta zona.</notification>

View File

@ -2451,6 +2451,10 @@ Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votr
[[URL] Cliquez ici] pour renouveler votre abonnement.
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.</notification>
<notification name="VoiceEffectsWillExpire">Au moins l'un de vos effets de voix expirera dans moins de [INTERVAL] jours.
[[URL] Cliquez ici] pour renouveler votre abonnement.
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.</notification>
<notification name="VoiceEffectsNew">De nouveaux effets de voix sont disponibles !</notification>
<notification name="Cannot enter parcel: not a group member">Seuls les membres d'un certain groupe peuvent visiter cette zone.</notification>
<notification name="Cannot enter parcel: banned">Vous ne pouvez pas pénétrer sur ce terrain car l'accès vous y est interdit.</notification>

View File

@ -2453,6 +2453,10 @@ Se sei un membro Premium, [[PREMIUM_URL] fai clic qui] per ricevere in regalo la
<notification name="VoiceEffectsExpiredInUse">Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
[[URL] Fai clic qui] per rinnovare l'abbonamento.
Se sei un membro Premium, [[PREMIUM_URL] fai clic qui] per ricevere in regalo la manipolazione vocale.</notification>
<notification name="VoiceEffectsWillExpire">Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
[[URL] Fai clic qui] per rinnovare l'abbonamento.
Se sei un membro Premium, [[PREMIUM_URL] fai clic qui] per ricevere in regalo la manipolazione vocale.</notification>
<notification name="VoiceEffectsNew">Sono disponibili nuove manipolazioni vocali.</notification>
<notification name="Cannot enter parcel: not a group member">Soltanto i membri di un determinato gruppo possono visitare questa zona.</notification>

View File

@ -4655,6 +4655,17 @@ Webページにリンクすると、他人がこの場所に簡単にアクセ
<notification name="VoiceEffectsExpiredInUse">ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。
期限を延長・更新するには[[URL] ここ]をクリックしてください。
プレミアム会員の方は、[[PREMIUM_URL] ここ]をクリックしてボイスモーフィング特典をお受け取りください。
<tag>
fail
</tag>
<tag>
voice
</tag>
</notification>
<notification name="VoiceEffectsWillExpire">ボイスモーフィング効果の1つ、または複数の有効期限が[INTERVAL]日以内に終了します。
期限を延長・更新するには[[URL] ここ]をクリックしてください。
プレミアム会員の方は、[[PREMIUM_URL] ここ]をクリックしてボイスモーフィング特典をお受け取りください。
<tag>
fail

View File

@ -3116,6 +3116,11 @@ Jeśli jesteś użytkownikiem premium, to [[PREMIUM_URL] kliknij tutaj] aby otrz
<notification name="VoiceEffectsExpiredInUse">
Czas aktywności Przekształcenia Głosu wygasł, normalne ustawienia Twojego głosu zostały zastosowane.
[[URL] Kliknij tutaj] aby odnowić subskrypcję.
Jeśli jesteś użytkownikiem premium, to [[PREMIUM_URL] kliknij tutaj] aby otrzymać swój perk Przekształceń Głosu.
</notification>
<notification name="VoiceEffectsWillExpire">
Jedno lub więcej z Twoich Przekształceń Głosu wygaśnie za mniej niż [INTERVAL] dni.
[[URL] Kliknij tutaj] aby odnowić subskrypcję.
Jeśli jesteś użytkownikiem premium, to [[PREMIUM_URL] kliknij tutaj] aby otrzymać swój perk Przekształceń Głosu.
</notification>
<notification name="VoiceEffectsNew">

View File

@ -2440,6 +2440,10 @@ Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu ap
<notification name="VoiceEffectsExpiredInUse">A Distorção de voz ativa expirou. Suas configurações de voz padrão foram ativadas.
[[URL] Clique aqui] para renovar o serviço.
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.</notification>
<notification name="VoiceEffectsWillExpire">Uma ou mais das suas distorções de voz tem vencimento em menos de [INTERVAL] dias.
[[URL] Clique aqui] para renovar o serviço.
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.</notification>
<notification name="VoiceEffectsNew">Novas Distorções de voz!</notification>
<notification name="Cannot enter parcel: not a group member">Só membros de um grupo podem acessar esta área.</notification>

View File

@ -3230,6 +3230,12 @@
Истек срок действия анимационного изменения голоса, действуют настройки вашего обычного голоса.
[[URL] Щелкните здесь], чтобы обновить подписку.
Если вы - владелец премиум-аккаунта, [[PREMIUM_URL] щелкните здесь], чтобы получить право на анимационное изменение голоса.
</notification>
<notification name="VoiceEffectsWillExpire">
Срок действия одного или нескольких ваших типов анимационного изменения голоса истекает через [INTERVAL] дней или раньше.
[[URL] Щелкните здесь], чтобы обновить подписку.
Если вы - владелец премиум-аккаунта, [[PREMIUM_URL] щелкните здесь], чтобы получить право на анимационное изменение голоса.
</notification>
<notification name="VoiceEffectsNew">

View File

@ -3230,6 +3230,12 @@ Aboneliğinizi yenilemek için [[URL] buraya tıklayın].
Etkin Ses Dönüşümünün süresi dolmuş, normal ses ayarlarınız uygulandı.
Aboneliğinizi yenilemek için [[URL] buraya tıklayın].
Özel Üye iseniz, ses dönüştürme özelliğini almak için [[PREMIUM_URL] buraya tıklayın].
</notification>
<notification name="VoiceEffectsWillExpire">
Ses Dönüşümlerinizden birinin ya da daha fazlasının süresi [INTERVAL] günden daha az bir zamanda dolacak.
Aboneliğinizi yenilemek için [[URL] buraya tıklayın].
Özel Üye iseniz, ses dönüştürme özelliğini almak için [[PREMIUM_URL] buraya tıklayın].
</notification>
<notification name="VoiceEffectsNew">

View File

@ -3214,6 +3214,12 @@ SHA1 指紋:[MD5_DIGEST]
使用中的變聲效果已經過期,已用你平時的聲音設定取代。
[[URL] 點按這裡]繼續訂用。
付費用戶請[[PREMIUM_URL] 點按這裡]領取免費變聲工具。
</notification>
<notification name="VoiceEffectsWillExpire">
至少一個你訂用的變聲效果將在 [INTERVAL] 天後到期。
[[URL] 點按這裡]繼續訂用。
付費用戶請[[PREMIUM_URL] 點按這裡]領取免費變聲工具。
</notification>
<notification name="VoiceEffectsNew">