diff --git a/backend/routes/campaign.js b/backend/routes/campaign.js index c5d70448..2c90ebba 100644 --- a/backend/routes/campaign.js +++ b/backend/routes/campaign.js @@ -100,7 +100,7 @@ router.get('/players', (req, res) => { }); router.put('/update', (req, res) => { - CampaignUser.find({campaign: req.query.campaign}).then((data) => { + CampaignUser.findOne({campaign: req.query.campaign, user: req.user}).then((data) => { if(data.is_dm){ let { name, diff --git a/client/src/services/Campaign.js b/client/src/services/Campaign.js index 344ea8a5..50066fd9 100644 --- a/client/src/services/Campaign.js +++ b/client/src/services/Campaign.js @@ -6,6 +6,8 @@ import { GetUser } from "./User"; import { chat } from './Chat'; import { ClearAll, CreateWindow } from './Windows'; +import Api from '@/services/Api'; +import { GetCampaign } from './Dragonroll'; let _currentCampaign = null; let _currentPlayer = null; @@ -27,12 +29,17 @@ function Disconnect(){ chat.value = []; } - function DisplayCampaign(data = _currentCampaign){ ClearAll(); CreateWindow('campaign_preview', {campaign: data}); } +function UpdateCampaignData(data){ + Api().put('/campaign/update?campaign=' + GetCampaign()._id, {campaign: data}).then(response => { + console.log(response); + }); +} + socket.on('update-players', data => { _UpdatePlayers(data) }) @@ -57,5 +64,6 @@ export { ConnectToCampaign, DisplayCampaign, + UpdateCampaignData, Disconnect } \ No newline at end of file diff --git a/client/src/views/windows/campaigns/CampaignPreviewWindow.vue b/client/src/views/windows/campaigns/CampaignPreviewWindow.vue index dd97833a..621c3db4 100644 --- a/client/src/views/windows/campaigns/CampaignPreviewWindow.vue +++ b/client/src/views/windows/campaigns/CampaignPreviewWindow.vue @@ -13,7 +13,7 @@ import ChatComponent from '../../partials/ChatComponent.vue'; import GameSystem from '@/views/partials/GameSystem.vue' import { GetModule } from '../../../services/Modules'; import { AddTooltip } from '../../../services/Tooltip'; -import { Disconnect } from '../../../services/Campaign'; +import { Disconnect, UpdateCampaignData } from '../../../services/Campaign'; import MarkdownEditor from '@/views/partials/MarkdownEditor.vue'; import { useI18n } from 'vue-i18n'; @@ -31,6 +31,7 @@ const campaign_title = ref(null); const copy_code_button = ref(null); const container = ref(null); +const description = ref(null); let id = data.id; @@ -50,10 +51,16 @@ function Exit(){ CreateWindow('campaign_list'); } +function DescriptionChanged(description){ + UpdateCampaignData({description}) +} + const description_editable = ref(false); onMounted(() => { if(GetClient().is_dm) description_editable.value = true; + + description.value.text = data.campaign.description; SetupHandle(id, handle); SetSize(id, {width: 800, height: 750}); @@ -71,7 +78,6 @@ onMounted(() => { campaign_title.value.style.backgroundColor = GetModule(data.campaign.system).color ? GetModule(data.campaign.system).color : "#1f1f1f"; AddTooltip(copy_code_button.value, `

${t('campaigns.preview.copy-explain')}

`, {max_width: 300}) - });