mirror of
https://github.com/andrei0x309/yup-live-chrome-extension.git
synced 2024-11-09 18:10:57 +00:00
changes: for v1.0.3
This commit is contained in:
parent
b5698da0a8
commit
181cd565db
@ -1,5 +1,14 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## [Version 1.0.3]
|
||||||
|
|
||||||
|
- change some user error messages
|
||||||
|
- case detection if there's no active tab
|
||||||
|
- always show rating website even if tab is not active
|
||||||
|
- change header to fixed size to not overflow if extension is installed on a mobile device
|
||||||
|
- added link to mobile APP version of yup live
|
||||||
|
- replaced seting for notification when refil to auto refill if you are online
|
||||||
|
|
||||||
## [Version 1.0.2]
|
## [Version 1.0.2]
|
||||||
|
|
||||||
- small url fix
|
- small url fix
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "yup live",
|
"name": "yup live",
|
||||||
"description": "Light alternative extension for yup protocol",
|
"description": "Light alternative extension for yup protocol",
|
||||||
"version": "1.0.2",
|
"version": "1.0.3",
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"icons": {
|
"icons": {
|
||||||
"16": "src/assets/icons/yup_ext_16.png",
|
"16": "src/assets/icons/yup_ext_16.png",
|
||||||
|
@ -60,6 +60,7 @@ const alarmHandler = async () => {
|
|||||||
setBadge('')
|
setBadge('')
|
||||||
updateSettings.hasNewNotifications = false
|
updateSettings.hasNewNotifications = false
|
||||||
}
|
}
|
||||||
|
setSettings(updateSettings).catch(console.error)
|
||||||
|
|
||||||
if (store.settings?.chromeNotifWhenReward && notSeen.some(notif => notif.action === 'reward')) {
|
if (store.settings?.chromeNotifWhenReward && notSeen.some(notif => notif.action === 'reward')) {
|
||||||
const rewardNotif = notSeen.find(notif => notif.action === 'reward')
|
const rewardNotif = notSeen.find(notif => notif.action === 'reward')
|
||||||
@ -82,23 +83,9 @@ const alarmHandler = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (store.settings?.chromeNotifWhenAbleToVote) {
|
if (store.settings?.chromeNotifWhenAbleToVote) {
|
||||||
const lastReset = (await getActionUsage(store?.user?.auth?.userId))?.data?.lastReset
|
await getActionUsage(store?.user?.auth?.userId)
|
||||||
const storeTs = store?.settings?.refilNotifTimestamp ?? 0
|
|
||||||
|
|
||||||
if (lastReset) {
|
|
||||||
const isReset = getTimeRemaining(lastReset).total <= 0;
|
|
||||||
if (!closeTo(new Date(lastReset), new Date(storeTs), 36e5) && isReset) {
|
|
||||||
updateSettings.refilNotifTimestamp = lastReset
|
|
||||||
chrome.notifications.create({
|
|
||||||
type: 'basic',
|
|
||||||
iconUrl: chrome.runtime.getURL('src/assets/icons/yup_ext_128.png'),
|
|
||||||
title: 'Yup Live Extension',
|
|
||||||
message: `You can curate now again`,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
setSettings(updateSettings).catch(console.error)
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching notifications', error)
|
console.error('Error fetching notifications', error)
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
import { isUrlInvalid } from '@/utils/misc';
|
import { isUrlInvalid } from '@/utils/misc';
|
||||||
|
|
||||||
let tab = null
|
let tab = null
|
||||||
let url
|
let url = new URL('http://127.0.0.1')
|
||||||
let isValid = true
|
let isValid = true
|
||||||
let loading = true
|
let loading = true
|
||||||
let loader: ImgLoader
|
let loader: ImgLoader
|
||||||
@ -16,11 +16,14 @@
|
|||||||
tab = (await getCurrentTab())[0]
|
tab = (await getCurrentTab())[0]
|
||||||
isValid = !isUrlInvalid(tab?.url)
|
isValid = !isUrlInvalid(tab?.url)
|
||||||
try {
|
try {
|
||||||
url = new URL(tab.url)
|
if(tab?.url) {
|
||||||
} catch (error) {
|
url = new URL(tab?.url)
|
||||||
console.log(error)
|
} else {
|
||||||
|
isValid = false
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
isValid = false
|
||||||
}
|
}
|
||||||
console.log(url)
|
|
||||||
loading = false
|
loading = false
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -32,14 +35,13 @@ $: {
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if tab}
|
|
||||||
<div class="{`flex flex-col ${loading ? 'animate-pulse' :''}`}">
|
<div class="{`flex flex-col ${loading ? 'animate-pulse' :''}`}">
|
||||||
{#if url}
|
{#if url}
|
||||||
<div class="flex items-center flex-col text-[0.8rem] leading-4 mb-4">
|
<div class="flex items-center flex-col text-[0.8rem] leading-4 mb-4">
|
||||||
<div class="mb relative">
|
<div class="mb relative">
|
||||||
<ImgLoader source={tab.favIconUrl} bind:this={loader}>
|
<ImgLoader source={tab?.favIconUrl ?? ''} bind:this={loader}>
|
||||||
<img style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="img" on:load={() => loader.onLoad()} on:error={() => loader.onError}
|
<img style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="img" on:load={() => loader.onLoad()} on:error={() => loader.onError}
|
||||||
class="w-5 h-5 mt-2 rounded-full wicon" src="{tab.favIconUrl}" alt="favicon" />
|
class="w-5 h-5 mt-2 rounded-full wicon" src="{tab?.favIconUrl ?? ''}" alt="favicon" />
|
||||||
<svg class="w-5 h-5 mt-2 rounded-full wicon" style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="error" viewBox="0 0 512 512"><g><polygon points="40,38.999 40,468.998 215,293.998 270,348.998 360,258.998 470,358.998 470,38.999 " style="fill:#EFF3F6;"/>
|
<svg class="w-5 h-5 mt-2 rounded-full wicon" style="{ $mainStore.settings.theme === 'light'? 'filter: invert(0.9);' : '' }" slot="error" viewBox="0 0 512 512"><g><polygon points="40,38.999 40,468.998 215,293.998 270,348.998 360,258.998 470,358.998 470,38.999 " style="fill:#EFF3F6;"/>
|
||||||
<g><circle cx="150" cy="158.999" r="40" style="fill:#FCD884;"/></g><g><polygon points="470,358.998 470,468.998 385,468.998 385,463.998 270,348.998 360,258.998 " style="fill:#70993F;"/></g><g><polygon points="385,463.998 385,468.998 40,468.998 215,293.998 270,348.998" style="fill:#80AF52;"/></g></g><g/></svg>
|
<g><circle cx="150" cy="158.999" r="40" style="fill:#FCD884;"/></g><g><polygon points="470,358.998 470,468.998 385,468.998 385,463.998 270,348.998 360,258.998 " style="fill:#70993F;"/></g><g><polygon points="385,463.998 385,468.998 40,468.998 215,293.998 270,348.998" style="fill:#80AF52;"/></g></g><g/></svg>
|
||||||
</ImgLoader>
|
</ImgLoader>
|
||||||
@ -49,14 +51,18 @@ $: {
|
|||||||
<h1 class="inline-flex text-[1.1rem] font-semibold mb-2">Invalid URL</h1>
|
<h1 class="inline-flex text-[1.1rem] font-semibold mb-2">Invalid URL</h1>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
{#if url.hostname !== '127.0.0.1'}
|
||||||
<span>Hostname: {url.hostname.length > 18 ? url.hostname.slice(0,16) + '...': url.hostname }</span>
|
<span>Hostname: {url.hostname.length > 18 ? url.hostname.slice(0,16) + '...': url.hostname }</span>
|
||||||
<span>URL: {url.href.length > 20 ? '...' + url.href.slice(-20) : url.href}</span>
|
<span>URL: {url.href.length > 20 ? '...' + url.href.slice(-20) : url.href}</span>
|
||||||
|
{:else}
|
||||||
|
<span>Hostname: No Active Tab</span>
|
||||||
|
<span>URL: No Active Tab</span>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<RateSingle url={url.href.replace(/\/$/gms, '') ?? ''} disabled={!isValid} />
|
<RateSingle url={url.href.replace(/\/$/gms, '') ?? ''} disabled={!isValid} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.wicon {
|
.wicon {
|
||||||
|
@ -131,7 +131,7 @@
|
|||||||
.logo {
|
.logo {
|
||||||
left: 0rem;
|
left: 0rem;
|
||||||
top: -0.8rem;
|
top: -0.8rem;
|
||||||
width: 100%;
|
width: 250px;
|
||||||
box-shadow: inset 3px -3px 6rem 11px #0000005e;
|
box-shadow: inset 3px -3px 6rem 11px #0000005e;
|
||||||
border-bottom: 1px solid #d3d9df63;
|
border-bottom: 1px solid #d3d9df63;
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
const discordLink = 'https://discord.com/invite/HnaTAXK'
|
const discordLink = 'https://discord.com/invite/HnaTAXK'
|
||||||
const yupForumLink = 'https://forum.yup.io'
|
const yupForumLink = 'https://forum.yup.io'
|
||||||
const yupDocsLink = 'https://docs.yup.io'
|
const yupDocsLink = 'https://docs.yup.io'
|
||||||
|
const yupLiveAndroid = 'https://play.google.com/store/apps/details?id=gf.info.yup'
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
version = getExtensionVersion();
|
version = getExtensionVersion();
|
||||||
@ -41,6 +42,9 @@
|
|||||||
<li><svg class="w-5 falign" viewBox="0 0 640 512" ><path fill="#fff" d="M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"/></svg>
|
<li><svg class="w-5 falign" viewBox="0 0 640 512" ><path fill="#fff" d="M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"/></svg>
|
||||||
<span aria-hidden class="link" on:click={() => extrenalNavigate(discordLink)} >Discord community
|
<span aria-hidden class="link" on:click={() => extrenalNavigate(discordLink)} >Discord community
|
||||||
</span></li>
|
</span></li>
|
||||||
|
<li><svg class="w-5 falign" viewBox="0 0 24 24"><title/><path d="M17.3,13.35a1,1,0,0,1-.7-.29,1,1,0,0,1,0-1.41l2.12-2.12a2,2,0,0,0,0-2.83L17.3,5.28a2.06,2.06,0,0,0-2.83,0L12.35,7.4A1,1,0,0,1,10.94,6l2.12-2.12a4.1,4.1,0,0,1,5.66,0l1.41,1.41a4,4,0,0,1,0,5.66L18,13.06A1,1,0,0,1,17.3,13.35Z" fill="#fff"/><path d="M8.11,21.3a4,4,0,0,1-2.83-1.17L3.87,18.72a4,4,0,0,1,0-5.66L6,10.94A1,1,0,0,1,7.4,12.35L5.28,14.47a2,2,0,0,0,0,2.83L6.7,18.72a2.06,2.06,0,0,0,2.83,0l2.12-2.12A1,1,0,1,1,13.06,18l-2.12,2.12A4,4,0,0,1,8.11,21.3Z" fill="#fff"/><path d="M8.82,16.18a1,1,0,0,1-.71-.29,1,1,0,0,1,0-1.42l6.37-6.36a1,1,0,0,1,1.41,0,1,1,0,0,1,0,1.42L9.52,15.89A1,1,0,0,1,8.82,16.18Z" fill="#fff"/></svg>
|
||||||
|
<span aria-hidden class="link" on:click={() => extrenalNavigate(yupLiveAndroid)} >Yup Live Android
|
||||||
|
</span></li>
|
||||||
<li><svg class="w-5 falign" viewBox="0 0 24 24"><title/><path d="M17.3,13.35a1,1,0,0,1-.7-.29,1,1,0,0,1,0-1.41l2.12-2.12a2,2,0,0,0,0-2.83L17.3,5.28a2.06,2.06,0,0,0-2.83,0L12.35,7.4A1,1,0,0,1,10.94,6l2.12-2.12a4.1,4.1,0,0,1,5.66,0l1.41,1.41a4,4,0,0,1,0,5.66L18,13.06A1,1,0,0,1,17.3,13.35Z" fill="#fff"/><path d="M8.11,21.3a4,4,0,0,1-2.83-1.17L3.87,18.72a4,4,0,0,1,0-5.66L6,10.94A1,1,0,0,1,7.4,12.35L5.28,14.47a2,2,0,0,0,0,2.83L6.7,18.72a2.06,2.06,0,0,0,2.83,0l2.12-2.12A1,1,0,1,1,13.06,18l-2.12,2.12A4,4,0,0,1,8.11,21.3Z" fill="#fff"/><path d="M8.82,16.18a1,1,0,0,1-.71-.29,1,1,0,0,1,0-1.42l6.37-6.36a1,1,0,0,1,1.41,0,1,1,0,0,1,0,1.42L9.52,15.89A1,1,0,0,1,8.82,16.18Z" fill="#fff"/></svg>
|
<li><svg class="w-5 falign" viewBox="0 0 24 24"><title/><path d="M17.3,13.35a1,1,0,0,1-.7-.29,1,1,0,0,1,0-1.41l2.12-2.12a2,2,0,0,0,0-2.83L17.3,5.28a2.06,2.06,0,0,0-2.83,0L12.35,7.4A1,1,0,0,1,10.94,6l2.12-2.12a4.1,4.1,0,0,1,5.66,0l1.41,1.41a4,4,0,0,1,0,5.66L18,13.06A1,1,0,0,1,17.3,13.35Z" fill="#fff"/><path d="M8.11,21.3a4,4,0,0,1-2.83-1.17L3.87,18.72a4,4,0,0,1,0-5.66L6,10.94A1,1,0,0,1,7.4,12.35L5.28,14.47a2,2,0,0,0,0,2.83L6.7,18.72a2.06,2.06,0,0,0,2.83,0l2.12-2.12A1,1,0,1,1,13.06,18l-2.12,2.12A4,4,0,0,1,8.11,21.3Z" fill="#fff"/><path d="M8.82,16.18a1,1,0,0,1-.71-.29,1,1,0,0,1,0-1.42l6.37-6.36a1,1,0,0,1,1.41,0,1,1,0,0,1,0,1.42L9.52,15.89A1,1,0,0,1,8.82,16.18Z" fill="#fff"/></svg>
|
||||||
<span aria-hidden class="link" on:click={() => extrenalNavigate(yupForumLink)} >Yup Forum
|
<span aria-hidden class="link" on:click={() => extrenalNavigate(yupForumLink)} >Yup Forum
|
||||||
</span></li>
|
</span></li>
|
||||||
|
@ -98,7 +98,7 @@ onMount(async () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="switch switch--4 text-[0.8rem] flex flex-col mb-4">
|
<div class="switch switch--4 text-[0.8rem] flex flex-col mb-4">
|
||||||
<span class="inline-block">Browser notification actions refill</span>
|
<span class="inline-block">Auto-refill Actions if online</span>
|
||||||
<label class="switch__label mt-2">
|
<label class="switch__label mt-2">
|
||||||
<input on:click={() => setSettingsLocal('chromeNotifWhenAbleToVote')} type="checkbox" class="switch__input"
|
<input on:click={() => setSettingsLocal('chromeNotifWhenAbleToVote')} type="checkbox" class="switch__input"
|
||||||
checked={settings.chromeNotifWhenAbleToVote}
|
checked={settings.chromeNotifWhenAbleToVote}
|
||||||
|
@ -71,11 +71,11 @@ export const executeVote = async ({
|
|||||||
} else {
|
} else {
|
||||||
const err = await req.text()
|
const err = await req.text()
|
||||||
if (err.includes('limit')) {
|
if (err.includes('limit')) {
|
||||||
$alertStore?.show('Rating limit consumed!!!', 'warning')
|
$alertStore?.show('Rating limit reached!!!', 'warning')
|
||||||
} else if(err.includes('requests')) {
|
} else if(err.includes('requests')) {
|
||||||
$alertStore?.show('You have made too many request try aagin after 24h', 'warning')
|
$alertStore?.show('You have made too many request try again after 24h', 'warning')
|
||||||
} else if(err.toLocaleLowerCase().includes('unauthorized')) {
|
} else if(err.toLocaleLowerCase().includes('unauthorized')) {
|
||||||
$alertStore?.show('Seem your auth token is not valid anymore re-login!!', 'error')
|
$alertStore?.show('Seems your auth token is not valid anymore re-login!!', 'error')
|
||||||
} else {
|
} else {
|
||||||
$alertStore?.show('Vote not submited due to error try to re-login!', 'error')
|
$alertStore?.show('Vote not submited due to error try to re-login!', 'error')
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user