mirror of
https://iceshrimp.dev/crimekillz/trashposs
synced 2024-11-24 09:49:05 +01:00
Release is default docker-compose version now, fix more dead links and missing texts....
This commit is contained in:
parent
f1ab8211c9
commit
aa273ccf21
@ -7,8 +7,8 @@
|
|||||||
5. # corepack enable && corepack prepare --activate && yarn --immutable
|
5. # corepack enable && corepack prepare --activate && yarn --immutable
|
||||||
6. Log into your docker registry (for ex. iceshrimp.dev)
|
6. Log into your docker registry (for ex. iceshrimp.dev)
|
||||||
7. # docker login iceshrimp.dev
|
7. # docker login iceshrimp.dev
|
||||||
8. Replace v2023.12.5-trash with however you want the docker tag to be named
|
8. Replace v2024.04.1 with however you want the docker tag to be named
|
||||||
9. # docker build . -t iceshrimp.dev/crimekillz/trashposs:v2023.12.5-poss
|
9. # docker build . -t iceshrimp.dev/crimekillz/trashposs:v2024.04.1
|
||||||
10. # docker push iceshrimp.dev/crimekillz/trashposs:v2023.12.5-poss
|
10. # docker push iceshrimp.dev/crimekillz/trashposs:v2024.04.1
|
||||||
11. Congratulations! You can now refer to that image in your docker-compose.yml
|
11. Congratulations! You can now refer to that image in your docker-compose.yml
|
||||||
|
|
||||||
|
@ -2,11 +2,11 @@ version: "3"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
image: iceshrimp.dev/crimekillz/trashposs:dev
|
image: iceshrimp.dev/crimekillz/trashposs:release
|
||||||
### If you want to build the image locally
|
### If you want to build the image locally
|
||||||
# build: .
|
# build: .
|
||||||
### If you want to build the image locally AND use Docker 20.10
|
### If you want to build the image locally AND use Docker 20.10
|
||||||
# build:
|
# build:
|
||||||
# context: .
|
# context: .
|
||||||
# args:
|
# args:
|
||||||
# DOCKER_BUILDKIT: 1
|
# DOCKER_BUILDKIT: 1
|
||||||
@ -19,7 +19,6 @@ services:
|
|||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
networks:
|
networks:
|
||||||
- trashnet
|
- trashnet
|
||||||
# - web
|
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
volumes:
|
volumes:
|
||||||
@ -78,6 +77,3 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
trashnet:
|
trashnet:
|
||||||
# web:
|
|
||||||
# external:
|
|
||||||
# name: web
|
|
||||||
|
@ -1364,8 +1364,8 @@ _tutorial:
|
|||||||
step5_2: "Dein Server hat {timelines} verschiedene Timelines aktiviert."
|
step5_2: "Dein Server hat {timelines} verschiedene Timelines aktiviert."
|
||||||
step5_3: "Die {icon} Home-Timeline ist die Timeline, in der du die Beiträge der
|
step5_3: "Die {icon} Home-Timeline ist die Timeline, in der du die Beiträge der
|
||||||
Nutzerkonten sehen kannst, denen du folgst."
|
Nutzerkonten sehen kannst, denen du folgst."
|
||||||
step5_4: "In der {Icon} Local-Timeline kannst du die Beiträge von jedem/jeder sehen
|
step5_4: "In der {icon} Local-Timeline kannst du die Beiträge von allen sehen
|
||||||
der/die auf diesem Server registriert ist."
|
die auf diesem Server registriert sind."
|
||||||
step5_5: "Die Social-Timeline {icon} ist eine Kombination aus der Home-Timeline
|
step5_5: "Die Social-Timeline {icon} ist eine Kombination aus der Home-Timeline
|
||||||
und der Local-Timeline."
|
und der Local-Timeline."
|
||||||
step5_6: "In der Empfohlen-Timeline {icon} kannst du Posts sehen, die von den Admins
|
step5_6: "In der Empfohlen-Timeline {icon} kannst du Posts sehen, die von den Admins
|
||||||
|
@ -5,7 +5,7 @@ export class instancePinnedPages1605585339718 implements MigrationInterface {
|
|||||||
}
|
}
|
||||||
async up(queryRunner: QueryRunner): Promise<void> {
|
async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.query(
|
await queryRunner.query(
|
||||||
`ALTER TABLE "meta" ADD "pinnedPages" character varying(512) array NOT NULL DEFAULT '{"/featured", "/channels", "/discover", "/pages", "/about-misskey"}'::varchar[]`,
|
`ALTER TABLE "meta" ADD "pinnedPages" character varying(512) array NOT NULL DEFAULT '{"/featured", "/discover", "/about-trashposs"}'::varchar[]`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
async down(queryRunner: QueryRunner): Promise<void> {
|
async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
@ -15,7 +15,7 @@ export class ResyncWithOrm1697289658422 implements MigrationInterface {
|
|||||||
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "secureMode" SET NOT NULL`);
|
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "secureMode" SET NOT NULL`);
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "privateMode" SET NOT NULL`);
|
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "privateMode" SET NOT NULL`);
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "allowedHosts" SET NOT NULL`);
|
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "allowedHosts" SET NOT NULL`);
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "pinnedPages" SET DEFAULT '{/featured,/channels,/discover,/pages,/about-trashposs}'`);
|
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "pinnedPages" SET DEFAULT '{/featured,/discover,/about-trashposs}'`);
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "repositoryUrl" SET DEFAULT 'https://iceshrimp.dev/Crimekillz/trashposs'`);
|
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "repositoryUrl" SET DEFAULT 'https://iceshrimp.dev/Crimekillz/trashposs'`);
|
||||||
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "feedbackUrl" SET DEFAULT 'https://iceshrimp.dev/Crimekillz/trashposs/issues/new'`);
|
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "feedbackUrl" SET DEFAULT 'https://iceshrimp.dev/Crimekillz/trashposs/issues/new'`);
|
||||||
await queryRunner.query(`COMMENT ON COLUMN "renote_muting"."createdAt" IS 'The created date of the Muting.'`);
|
await queryRunner.query(`COMMENT ON COLUMN "renote_muting"."createdAt" IS 'The created date of the Muting.'`);
|
||||||
|
@ -23,7 +23,7 @@ export const navbarItemDef = reactive({
|
|||||||
icon: "ph-tornado ph-bold ph-lg",
|
icon: "ph-tornado ph-bold ph-lg",
|
||||||
show: computed(() => $i != null),
|
show: computed(() => $i != null),
|
||||||
indicated: computed(() => $i?.hasUnreadMessagingMessage || $i?.hasUnreadAnnouncement),
|
indicated: computed(() => $i?.hasUnreadMessagingMessage || $i?.hasUnreadAnnouncement),
|
||||||
to: "/my/messaging",
|
to: "/my/messenger",
|
||||||
},
|
},
|
||||||
drive: {
|
drive: {
|
||||||
title: "drive",
|
title: "drive",
|
||||||
|
@ -144,6 +144,10 @@ import "swiper/scss";
|
|||||||
import "swiper/scss/virtual";
|
import "swiper/scss/virtual";
|
||||||
import { useRouter } from "@/router.js";
|
import { useRouter } from "@/router.js";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
tab?: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const tabs = ["users", "featured", "channels", "pages", "reel"];
|
const tabs = ["users", "featured", "channels", "pages", "reel"];
|
||||||
@ -248,6 +252,7 @@ function setSwiperRef(swiper) {
|
|||||||
|
|
||||||
function onSlideChange() {
|
function onSlideChange() {
|
||||||
tab = tabs[swiperRef.activeIndex];
|
tab = tabs[swiperRef.activeIndex];
|
||||||
|
window.history.pushState(null, null, '/discover/' + tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncSlide(index) {
|
function syncSlide(index) {
|
||||||
@ -255,7 +260,8 @@ function syncSlide(index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
syncSlide(tabs.indexOf(swiperRef.activeIndex));
|
tab = tabs[tabs.indexOf(props.tab ?? swiperRef.activeIndex)] ?? tab;
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
});
|
});
|
||||||
|
|
||||||
onActivated(() => {
|
onActivated(() => {
|
||||||
|
@ -121,7 +121,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, markRaw, onMounted, onUnmounted, watch } from "vue";
|
import { ref, markRaw, onMounted, onActivated, onUnmounted, watch } from "vue";
|
||||||
import * as Acct from "trashposs-js/built/acct";
|
import * as Acct from "trashposs-js/built/acct";
|
||||||
import { Virtual } from "swiper/modules";
|
import { Virtual } from "swiper/modules";
|
||||||
import { Swiper, SwiperSlide } from "swiper/vue";
|
import { Swiper, SwiperSlide } from "swiper/vue";
|
||||||
@ -141,6 +141,10 @@ import { defaultStore } from "@/store";
|
|||||||
import "swiper/scss";
|
import "swiper/scss";
|
||||||
import "swiper/scss/virtual";
|
import "swiper/scss/virtual";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
tab?: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
let messages = $ref([]);
|
let messages = $ref([]);
|
||||||
@ -294,6 +298,7 @@ function setSwiperRef(swiper) {
|
|||||||
|
|
||||||
function onSlideChange() {
|
function onSlideChange() {
|
||||||
tab = tabs[swiperRef.activeIndex];
|
tab = tabs[swiperRef.activeIndex];
|
||||||
|
window.history.pushState(null, null, '/my/messenger/' + tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncSlide(index) {
|
function syncSlide(index) {
|
||||||
@ -301,7 +306,8 @@ function syncSlide(index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
syncSlide(tabs.indexOf(swiperRef.activeIndex));
|
tab = tabs[tabs.indexOf(props.tab ?? swiperRef.activeIndex)] ?? tab;
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
|
|
||||||
connection = markRaw(stream.useChannel("messagingIndex"));
|
connection = markRaw(stream.useChannel("messagingIndex"));
|
||||||
|
|
||||||
@ -325,6 +331,10 @@ onMounted(() => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onActivated(() => {
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
|
});
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
if (connection) connection.dispose();
|
if (connection) connection.dispose();
|
||||||
});
|
});
|
||||||
|
@ -102,7 +102,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, onMounted, watch, defineAsyncComponent } from "vue";
|
import { ref, onMounted, onActivated, watch, defineAsyncComponent } from "vue";
|
||||||
import { Virtual } from "swiper/modules";
|
import { Virtual } from "swiper/modules";
|
||||||
import { Swiper, SwiperSlide } from "swiper/vue";
|
import { Swiper, SwiperSlide } from "swiper/vue";
|
||||||
import MkPagination from "@/components/MkPagination.vue";
|
import MkPagination from "@/components/MkPagination.vue";
|
||||||
@ -123,6 +123,10 @@ import { deviceKind } from "@/scripts/device-kind";
|
|||||||
import "swiper/scss";
|
import "swiper/scss";
|
||||||
import "swiper/scss/virtual";
|
import "swiper/scss/virtual";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
tab?: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
const tabs = ["favorites", "clips", "reactions"];
|
const tabs = ["favorites", "clips", "reactions"];
|
||||||
let tab = $ref(tabs[0]);
|
let tab = $ref(tabs[0]);
|
||||||
watch($$(tab), () => syncSlide(tabs.indexOf(tab)));
|
watch($$(tab), () => syncSlide(tabs.indexOf(tab)));
|
||||||
@ -212,6 +216,7 @@ function setSwiperRef(swiper) {
|
|||||||
|
|
||||||
function onSlideChange() {
|
function onSlideChange() {
|
||||||
tab = tabs[swiperRef.activeIndex];
|
tab = tabs[swiperRef.activeIndex];
|
||||||
|
window.history.pushState(null, null, '/my/snippets/' + tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncSlide(index) {
|
function syncSlide(index) {
|
||||||
@ -219,7 +224,12 @@ function syncSlide(index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
syncSlide(tabs.indexOf(swiperRef.activeIndex));
|
tab = tabs[tabs.indexOf(props.tab ?? swiperRef.activeIndex)] ?? tab;
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
|
});
|
||||||
|
|
||||||
|
onActivated(() => {
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
});
|
});
|
||||||
|
|
||||||
definePageMetadata({
|
definePageMetadata({
|
||||||
|
@ -137,7 +137,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
syncSlide(tabs.indexOf(props.tab ?? swiperRef.activeIndex));
|
tab = tabs[tabs.indexOf(props.tab ?? swiperRef.activeIndex)] ?? tab;
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
});
|
});
|
||||||
|
|
||||||
onActivated(() => {
|
onActivated(() => {
|
||||||
|
@ -128,6 +128,10 @@ import { defaultStore } from "@/store";
|
|||||||
import "swiper/scss";
|
import "swiper/scss";
|
||||||
import "swiper/scss/virtual";
|
import "swiper/scss/virtual";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
tab?: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
const paginationAntenna = {
|
const paginationAntenna = {
|
||||||
endpoint: "antennas/list" as const,
|
endpoint: "antennas/list" as const,
|
||||||
limit: 250,
|
limit: 250,
|
||||||
@ -209,6 +213,7 @@ function setSwiperRef(swiper) {
|
|||||||
|
|
||||||
function onSlideChange() {
|
function onSlideChange() {
|
||||||
tab = tabs[swiperRef.activeIndex];
|
tab = tabs[swiperRef.activeIndex];
|
||||||
|
window.history.pushState(null, null, '/news/' + tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncSlide(index) {
|
function syncSlide(index) {
|
||||||
@ -216,10 +221,12 @@ function syncSlide(index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
syncSlide(tabs.indexOf(swiperRef.activeIndex));
|
tab = tabs[tabs.indexOf(props.tab ?? swiperRef.activeIndex)] ?? tab;
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
});
|
});
|
||||||
|
|
||||||
onActivated(() => {
|
onActivated(() => {
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
refresh();
|
refresh();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, watch } from "vue";
|
import { computed, ref, watch, onMounted, onActivated } from "vue";
|
||||||
import { Virtual } from "swiper/modules";
|
import { Virtual } from "swiper/modules";
|
||||||
import { Swiper, SwiperSlide } from "swiper/vue";
|
import { Swiper, SwiperSlide } from "swiper/vue";
|
||||||
import { notificationTypes } from "trashposs-js";
|
import { notificationTypes } from "trashposs-js";
|
||||||
@ -65,6 +65,10 @@ import { defaultStore } from "@/store";
|
|||||||
import "swiper/scss";
|
import "swiper/scss";
|
||||||
import "swiper/scss/virtual";
|
import "swiper/scss/virtual";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
tab?: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
const tabs = ["all", "unread", "mentions", "directNotes"];
|
const tabs = ["all", "unread", "mentions", "directNotes"];
|
||||||
let tab = $ref(tabs[0]);
|
let tab = $ref(tabs[0]);
|
||||||
watch($$(tab), () => syncSlide(tabs.indexOf(tab)));
|
watch($$(tab), () => syncSlide(tabs.indexOf(tab)));
|
||||||
@ -181,9 +185,19 @@ function setSwiperRef(swiper) {
|
|||||||
|
|
||||||
function onSlideChange() {
|
function onSlideChange() {
|
||||||
tab = tabs[swiperRef.activeIndex];
|
tab = tabs[swiperRef.activeIndex];
|
||||||
|
window.history.pushState(null, null, '/my/notifications/' + tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncSlide(index) {
|
function syncSlide(index) {
|
||||||
swiperRef.slideTo(index);
|
swiperRef.slideTo(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
tab = tabs[tabs.indexOf(props.tab ?? swiperRef.activeIndex)] ?? tab;
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
|
});
|
||||||
|
|
||||||
|
onActivated(() => {
|
||||||
|
syncSlide(tabs.indexOf(tab));
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -577,7 +577,7 @@ export const routes = [
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/my/notifications",
|
path: "/my/notifications/:tab?",
|
||||||
component: page(() => import("./pages/notifications.vue")),
|
component: page(() => import("./pages/notifications.vue")),
|
||||||
loginRequired: true,
|
loginRequired: true,
|
||||||
},
|
},
|
||||||
@ -588,7 +588,7 @@ export const routes = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "messaging",
|
name: "messaging",
|
||||||
path: "/my/messaging",
|
path: "/my/messenger/:tab?",
|
||||||
component: page(() => import("./pages/messaging/index.vue")),
|
component: page(() => import("./pages/messaging/index.vue")),
|
||||||
loginRequired: true,
|
loginRequired: true,
|
||||||
},
|
},
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
:aria-label="i18n.t('messaging')"
|
:aria-label="i18n.t('messaging')"
|
||||||
class="button messaging _button"
|
class="button messaging _button"
|
||||||
@click="
|
@click="
|
||||||
mainRouter.push('/my/messaging');
|
mainRouter.push('/my/messenger');
|
||||||
updateButtonState();
|
updateButtonState();
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@ -238,7 +238,7 @@ function updateButtonState(): void {
|
|||||||
buttonAnimIndex.value = 1;
|
buttonAnimIndex.value = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (routerState.includes("/my/messaging")) {
|
if (routerState.includes("/my/messaging") || routerState.includes("/my/messenger")) {
|
||||||
buttonAnimIndex.value = 2;
|
buttonAnimIndex.value = 2;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user