From ec2e5fd82f9e7cdaeda0be236f484a6e0453e0ca Mon Sep 17 00:00:00 2001 From: Matt Isenhower Date: Wed, 30 Nov 2022 15:47:02 -0800 Subject: [PATCH] Add a Salmon Run gear tweet --- app/twitter/generators/SalmonRunGearTweet.mjs | 43 +++++++++++++++++++ app/twitter/generators/TweetGenerator.mjs | 3 +- app/twitter/index.mjs | 2 + 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 app/twitter/generators/SalmonRunGearTweet.mjs diff --git a/app/twitter/generators/SalmonRunGearTweet.mjs b/app/twitter/generators/SalmonRunGearTweet.mjs new file mode 100644 index 0000000..4e7ae29 --- /dev/null +++ b/app/twitter/generators/SalmonRunGearTweet.mjs @@ -0,0 +1,43 @@ +import TweetGenerator from "./TweetGenerator.mjs"; +import Media from "../Media.mjs"; +import { useCoopGearStore } from "../../../src/stores/gear.mjs"; + +export default class SalmonRunGearTweet extends TweetGenerator +{ + key = 'gear.salmonrun'; + name = 'Salmon Run Gear'; + + async getGear() { + await this.preparePinia(); + + return useCoopGearStore().monthlyGear; + } + + async getDataTime() { + let gear = await this.getGear(); + + return gear?.__splatoon3ink_id; + } + + async shouldTweet() { + let gear = await this.getGear(); + + let cachedId = await this.lastTweetCache.getData(); + + return gear?.__splatoon3ink_id && gear?.__splatoon3ink_id !== cachedId; + } + + async _getStatus() { + let gear = await this.getGear(); + + return `New Salmon Run reward gear is now available! This month's gear is the ${gear.name}. #salmonrun #splatoon3`; + } + + /** @param {ScreenshotHelper} screenshotHelper */ + async _getMedia(screenshotHelper) { + let media = new Media; + media.file = await screenshotHelper.capture('gear/salmonrun'); + + return media; + } +} diff --git a/app/twitter/generators/TweetGenerator.mjs b/app/twitter/generators/TweetGenerator.mjs index a7b416c..6b260be 100644 --- a/app/twitter/generators/TweetGenerator.mjs +++ b/app/twitter/generators/TweetGenerator.mjs @@ -1,6 +1,6 @@ import fs from 'fs/promises'; import { createPinia, setActivePinia } from 'pinia'; -import { useFestivalsDataStore, useGearDataStore, useSchedulesDataStore } from '../../../src/stores/data.mjs'; +import { useCoopDataStore, useFestivalsDataStore, useGearDataStore, useSchedulesDataStore } from '../../../src/stores/data.mjs'; import prefixedConsole from '../../common/prefixedConsole.mjs'; import Tweet from '../Tweet.mjs'; import TwitterClient from '../TwitterClient.mjs'; @@ -38,6 +38,7 @@ export default class TweetGenerator useSchedulesDataStore().setData(JSON.parse(await fs.readFile('dist/data/schedules.json'))); useGearDataStore().setData(JSON.parse(await fs.readFile('dist/data/gear.json'))); + useCoopDataStore().setData(JSON.parse(await fs.readFile('dist/data/coop.json'))); useFestivalsDataStore().setData(JSON.parse(await fs.readFile('dist/data/festivals.json'))); this._piniaInitialized = true; diff --git a/app/twitter/index.mjs b/app/twitter/index.mjs index 8202e2b..bf0cd90 100644 --- a/app/twitter/index.mjs +++ b/app/twitter/index.mjs @@ -1,5 +1,6 @@ import DailyDropGearTweet from "./generators/DailyDropGearTweet.mjs"; import RegularGearTweet from "./generators/RegularGearTweet.mjs"; +import SalmonRunGearTweet from "./generators/SalmonRunGearTweet.mjs"; import SalmonRunTweet from "./generators/SalmonRunTweet.mjs"; import SchedulesTweet from "./generators/SchedulesTweet.mjs"; import SplatfestResultsTweet from "./generators/SplatfestResultsTweet.mjs"; @@ -11,6 +12,7 @@ export function defaultTwitterManager() { new DailyDropGearTweet, new RegularGearTweet, new SalmonRunTweet, + new SalmonRunGearTweet, new SplatfestResultsTweet, ]); }