diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..7bff8df --- /dev/null +++ b/.drone.yml @@ -0,0 +1,38 @@ +kind: pipeline +type: docker +name: build + +steps: + - name: install + image: node:lts-alpine + commands: + - apk add git + - npm install + + - name: build + image: node:lts-alpine + commands: + - npm run build + depends_on: + - install + + - name: publish + image: alpine + depends_on: + - build + when: + branch: + - master + environment: + USERNAME: + from_secret: ftp_username + PASSWORD: + from_secret: ftp_password + APIKEY: + from_secret: api_key + commands: + - apk --no-cache add lftp curl + - cd dist + - 'curl -X DELETE -H "AccessKey: $PASSWORD" https://storage.bunnycdn.com/mercuryapp/' + - 'lftp -e "mirror -P 10 -R" -u $USERNAME,$PASSWORD storage.bunnycdn.com' + - 'curl -X POST -H "AccessKey: $APIKEY" https://bunnycdn.com/api/pullzone/733874/purgeCache --data ""' \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9cb8606..602f3d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "reconnecting-websocket": "^4.4.0", "romulus-js": "git+https://git.jacknet.io/TerribleCodeClub/romulus-js.git", "uuid": "^8.3.2", + "vanilla-picker": "^2.12.1", "vue": "^3.2.25", "vue-router": "^4.0.14" }, @@ -46,6 +47,11 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@sphinxxxx/color-conversion": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + }, "node_modules/@types/color": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz", @@ -878,6 +884,14 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/vanilla-picker": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.1.tgz", + "integrity": "sha512-2qrEP9VYylKXbyzXKsbu2dferBTvqnlsr29XjHwFE+/MEp0VNj6oEUESLDtKZ7DWzGdSv1x/+ujqFZF+KsO3cg==", + "dependencies": { + "@sphinxxxx/color-conversion": "^2.2.2" + } + }, "node_modules/vite": { "version": "2.8.6", "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", @@ -954,6 +968,11 @@ "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==", "peer": true }, + "@sphinxxxx/color-conversion": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + }, "@types/color": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz", @@ -1479,6 +1498,14 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, + "vanilla-picker": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.1.tgz", + "integrity": "sha512-2qrEP9VYylKXbyzXKsbu2dferBTvqnlsr29XjHwFE+/MEp0VNj6oEUESLDtKZ7DWzGdSv1x/+ujqFZF+KsO3cg==", + "requires": { + "@sphinxxxx/color-conversion": "^2.2.2" + } + }, "vite": { "version": "2.8.6", "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", diff --git a/package.json b/package.json index b6ba803..7b101c4 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "reconnecting-websocket": "^4.4.0", "romulus-js": "git+https://git.jacknet.io/TerribleCodeClub/romulus-js.git", "uuid": "^8.3.2", + "vanilla-picker": "^2.12.1", "vue": "^3.2.25", "vue-router": "^4.0.14" }, diff --git a/src/components/settings/ColorPicker.vue b/src/components/settings/ColorPicker.vue new file mode 100644 index 0000000..c66fe31 --- /dev/null +++ b/src/components/settings/ColorPicker.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/components/userlist/User.vue b/src/components/userlist/User.vue index a1807eb..2031233 100644 --- a/src/components/userlist/User.vue +++ b/src/components/userlist/User.vue @@ -8,5 +8,13 @@ import { computed } from 'vue' const props = defineProps(['user']) const user = props.user -const color = computed(() => { return user.color?.hex() ?? '#6c757d' }) +const bootstrapSecondaryColor = getComputedStyle(document.documentElement).getPropertyValue('--bs-secondary') + +const color = computed(() => { return user.color?.hex() ?? bootstrapSecondaryColor }) + + \ No newline at end of file diff --git a/src/plugins/websocket.js b/src/plugins/websocket.js index f367c23..ecdd0ab 100644 --- a/src/plugins/websocket.js +++ b/src/plugins/websocket.js @@ -5,6 +5,7 @@ import { useUserStore } from '../stores/userStore' import { useMessageStore } from '../stores/messageStore' import { useChannelStore } from '../stores/channelStore' import { decrypt } from 'romulus-js' +import { provide } from 'vue' const CLIENT_ID = 'Mercury' const SUBSCRIBED_MESSAGE_TYPES = [MessageTypes.Basic, MessageTypes.UserDataRequest, MessageTypes.UserDataResponse] @@ -105,6 +106,8 @@ export default { }) } + app.provide('requestUserData', requestUserData) + // Keepalive timeout. var timeout = setInterval(() => { ws.send(packers[MessageTypes.Keepalive]()) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index d3e3f2a..2b16900 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -5,11 +5,11 @@