Compare commits
19 Commits
c2b5017324
...
renovate/j
Author | SHA1 | Date | |
---|---|---|---|
e3d77a2b06 | |||
126c709775 | |||
52e71839c0 | |||
c4b8354b36 | |||
95c73dbb74 | |||
36a0b0b826 | |||
b0adf848b4 | |||
6cbf0a9265 | |||
c07f82899c | |||
bbce59047e | |||
de1987bfec | |||
49fa6dd451 | |||
1dcef3d7e6 | |||
1f9fcc3759 | |||
c32ef945ab | |||
ed79e52441 | |||
06c09e8312 | |||
2ef9deedc3 | |||
248b2e70cf |
3
.gitignore
vendored
3
.gitignore
vendored
@ -2,4 +2,5 @@
|
||||
.vscode
|
||||
node_modules
|
||||
public/build
|
||||
build-info.js
|
||||
build-info.js
|
||||
yarn.lock
|
@ -1,5 +1,7 @@
|
||||
# ScoreSaber Reloaded
|
||||
|
||||
Forked from: <https://github.com/motzel/scoresaber-reloaded>
|
||||
|
||||
## Users
|
||||
|
||||
Just go to [ssr.fascinated.cc](https://ssr.fascinated.cc)
|
||||
@ -9,11 +11,11 @@ Just go to [ssr.fascinated.cc](https://ssr.fascinated.cc)
|
||||
### Install the dependencies
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
npm install
|
||||
```
|
||||
|
||||
### Start the dev environment
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
npm run dev
|
||||
```
|
||||
|
31
package-lock.json
generated
31
package-lock.json
generated
@ -707,11 +707,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/idb": {
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmjs.org/idb/-/idb-6.1.2.tgz",
|
||||
"integrity": "sha512-1DNDVu3yDhAZkFDlJf0t7r+GLZ248F5pTAtA7V0oVG3yjmV125qZOx3g0XpAEkGZVYQiFDAsSOnGet2bhugc3w==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
"version": "6.1.5",
|
||||
"resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz",
|
||||
"integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/immer": {
|
||||
"version": "9.0.5",
|
||||
@ -872,21 +871,25 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/json-stable-stringify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
|
||||
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz",
|
||||
"integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jsonify": "~0.0.0"
|
||||
"jsonify": "^0.0.1"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonify": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
|
||||
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz",
|
||||
"integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==",
|
||||
"dev": true,
|
||||
"license": "Public Domain"
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/kleur": {
|
||||
"version": "3.0.3",
|
||||
|
7970
public/assets/external/fontawesome/all.css
vendored
Normal file
7970
public/assets/external/fontawesome/all.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5982
public/assets/external/fontawesome/all.js
vendored
Normal file
5982
public/assets/external/fontawesome/all.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -9715,8 +9715,6 @@ label.panel-block:hover {
|
||||
padding: 3rem 1.5rem 6rem;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bulma.css.map */
|
||||
|
||||
:root {
|
||||
--background: #222;
|
||||
--foreground: #252525;
|
@ -51,6 +51,8 @@ select {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
|
||||
border-radius: 6px;
|
||||
|
||||
position: relative;
|
||||
opacity: var(--transparency);
|
||||
}
|
||||
@ -76,7 +78,7 @@ select {
|
||||
height: 100%;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("./scoresaber-logo.svg");
|
||||
background-image: url("/assets/scoresaber-logo.svg");
|
||||
}
|
||||
|
||||
.beatsavior-icon {
|
||||
@ -92,7 +94,7 @@ select {
|
||||
height: 100%;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("./accsaber-logo.png");
|
||||
background-image: url("/assets/accsaber-logo.png");
|
||||
}
|
||||
|
||||
.grid-transition-helper {
|
@ -6,18 +6,24 @@
|
||||
|
||||
<title>ScoreSaber Reloaded</title>
|
||||
|
||||
<!-- Internal Assets -->
|
||||
<link rel="icon" type="image/png" href="/assets/favicon.png" />
|
||||
<link rel="stylesheet" href="/assets/ss-bulma.css" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
|
||||
/>
|
||||
<link rel="stylesheet" href="/assets/ssr.css?20210925" />
|
||||
<link rel="stylesheet" href="/assets/theme/ss-bulma.css" />
|
||||
<link rel="stylesheet" href="/assets/theme/ssr.css?20210925" />
|
||||
<link rel="stylesheet" href="/build/bundle.css" />
|
||||
|
||||
<!-- External Assets -->
|
||||
<script
|
||||
src="/assets/external/fontawesome/all.js"
|
||||
data-auto-replace-svg="nest"
|
||||
></script>
|
||||
<link rel="stylesheet" href="/assets/external/fontawesome/all.css" />
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="/assets/swiped-events.min.js"></script>
|
||||
<script defer src="/build/bundle.js"></script>
|
||||
|
||||
<!-- Embed Tags -->
|
||||
<meta content="Scoresaber Reloaded" property="og:site_name" />
|
||||
<meta content="SSR - Score Tracker" property="og:title" />
|
||||
<meta
|
||||
|
6
renovate.json
Normal file
6
renovate.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"local>Fascinated/renovate-config"
|
||||
]
|
||||
}
|
@ -1,14 +1,22 @@
|
||||
<script>
|
||||
import {opt} from '../../utils/js'
|
||||
import { opt } from '../../utils/js';
|
||||
|
||||
export let player;
|
||||
|
||||
$: avatar = opt(player, 'playerInfo.avatar')
|
||||
const avatar = opt(player, 'playerInfo.avatar')
|
||||
|
||||
// TEMP WORKAROUND UNTIL I MIGRATE TO NEW SS API
|
||||
export let avatarr;
|
||||
if (avatar.includes("oculus")) {
|
||||
avatarr = "https://cdn.scoresaber.com/avatars/oculus.png"
|
||||
} else {
|
||||
avatarr = `https://cdn.scoresaber.com/avatars/${player.playerId}.jpg`
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if avatar}
|
||||
{#if avatarr}
|
||||
<figure class="image is-24x24" on:click>
|
||||
<img src={avatar} alt=""/>
|
||||
<img src={avatarr} alt=""/>
|
||||
</figure>
|
||||
{/if}
|
||||
|
||||
|
@ -95,7 +95,16 @@
|
||||
|
||||
showTwitchLinkBtn = !twitchToken || tokenExpireSoon;
|
||||
|
||||
twitchBtnLabel = !twitchToken || !tokenExpireSoon ? 'Link to Twitch' : 'Renew Twitch token'
|
||||
if (!twitchToken) {
|
||||
twitchBtnLabel = "Login with Twitch";
|
||||
}
|
||||
if (tokenExpireSoon) {
|
||||
twitchBtnLabel = "Renew Twitch token"
|
||||
}
|
||||
if (twitchToken) {
|
||||
twitchBtnLabel = "Already logged in"
|
||||
}
|
||||
|
||||
twitchBtnTitle = twitchToken && tokenExpireInDays > 0 ? `Days left: ${tokenExpireInDays}` : null;
|
||||
twitchBtnDisabled = !tokenExpireSoon;
|
||||
}
|
||||
@ -215,9 +224,9 @@
|
||||
</svelte:fragment>
|
||||
|
||||
<svelte:fragment slot="footer-left">
|
||||
<File iconFa="fas fa-file-export" title="Import SSR data from file" loading={isImporting} disabled={isImporting}
|
||||
<File iconFa="fa-solid fa-file-import" title="Import SSR data from file" loading={isImporting} disabled={isImporting}
|
||||
accept="application/json" bind:this={importBtn} on:change={onImport}/>
|
||||
<Button iconFa="fas fa-file-import" title="Export SSR data to file" on:click={onExport} loading={isExporting} disabled={isExporting}/>
|
||||
<Button iconFa="fa-regular fa-floppy-disk" title="Export SSR data to file" on:click={onExport} loading={isExporting} disabled={isExporting}/>
|
||||
</svelte:fragment>
|
||||
|
||||
<svelte:fragment slot="footer-right">
|
||||
|
@ -1,5 +1,6 @@
|
||||
<script>
|
||||
import Spinner from '../Common/Spinner.svelte'
|
||||
import { SS_CDN_HOST } from '../../network/queues/scoresaber/page-queue';
|
||||
import Spinner from '../Common/Spinner.svelte';
|
||||
|
||||
export let playerInfo;
|
||||
export let isLoading = false;
|
||||
@ -10,7 +11,8 @@
|
||||
<span class="no-image">?</span>
|
||||
|
||||
{#if playerInfo && playerInfo.avatar}
|
||||
<img src={playerInfo.avatar} class="avatar" alt="" />
|
||||
<!-- TEMP WORKAROUND UNTIL I MIGRATE TO NEW SS API -->
|
||||
<img src={playerInfo.avatar.replace("https://new.scoresaber.com/api/static", SS_CDN_HOST)} class="avatar" alt="" />
|
||||
{/if}
|
||||
<span class="spinner">
|
||||
<Spinner width="100%" height="100%"/>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<script>
|
||||
import {createEventDispatcher} from 'svelte'
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
|
||||
export let filter;
|
||||
|
||||
@ -71,7 +71,6 @@
|
||||
right: 0;
|
||||
width: 1.75em;
|
||||
text-align: center;
|
||||
padding: .4em;
|
||||
transition: all 300ms ease-out;
|
||||
background-color: var(--dimmed);
|
||||
z-index: 1;
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { default as createQueue, PRIORITY } from "../http-queue";
|
||||
import ssrConfig from "../../../ssr-config";
|
||||
import { substituteVars } from "../../../utils/format";
|
||||
import { default as createQueue, PRIORITY } from "../http-queue";
|
||||
|
||||
const CLIENT_ID = "u0swxz56n4iumc634at1osoqdk31qt";
|
||||
const CLIENT_ID = "r2phvaavwhzh2s19y72na3cq1x4a58";
|
||||
|
||||
const TWITCH_AUTH_URL = "https://id.twitch.tv/oauth2";
|
||||
const AUTHORIZATION_URL =
|
||||
|
@ -1,11 +1,11 @@
|
||||
import queues from "../network/queues/queues";
|
||||
import keyValueRepository from "../db/repository/key-value";
|
||||
import twitchRepository from "../db/repository/twitch";
|
||||
import createPlayerService from "../services/scoresaber/player";
|
||||
import profileApiClient from "../network/clients/twitch/api-profile";
|
||||
import videosApiClient from "../network/clients/twitch/api-videos";
|
||||
import { PRIORITY } from "../network/queues/http-queue";
|
||||
import queues from "../network/queues/queues";
|
||||
import createPlayerService from "../services/scoresaber/player";
|
||||
import eventBus from "../utils/broadcast-channel-pubsub";
|
||||
import log from "../utils/logger";
|
||||
import {
|
||||
addToDate,
|
||||
dateFromString,
|
||||
@ -14,7 +14,7 @@ import {
|
||||
millisToDuration,
|
||||
MINUTE,
|
||||
} from "../utils/date";
|
||||
import { PRIORITY } from "../network/queues/http-queue";
|
||||
import log from "../utils/logger";
|
||||
import makePendingPromisePool from "../utils/pending-promises";
|
||||
|
||||
const TWITCH_TOKEN_KEY = "twitchToken";
|
||||
|
Reference in New Issue
Block a user