Skip to content

Commit

Permalink
Merge branch 'master' into snyk-fix-be388785879f21e564de88dc7593fbee
Browse files Browse the repository at this point in the history
  • Loading branch information
cohenaj194 authored Jul 1, 2024
2 parents 6594ae3 + 682ba03 commit 228eab8
Show file tree
Hide file tree
Showing 11 changed files with 1,164 additions and 31 deletions.
13 changes: 9 additions & 4 deletions app/components/navigation/sidebar/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ const navGroups: Array<{
links: [
{
name: 'Guides and Tutorials',
href: 'https://github.com/ff14-advanced-market-search/saddlebag-with-pockets/wiki#game-guides',
href: 'https://github.com/ff14-advanced-market-search/saddlebag-with-pockets/wiki#ffxiv-alert-guides',
icon: DocumentSearchIcon,
external: true
},
Expand Down Expand Up @@ -197,13 +197,13 @@ const navGroups: Array<{
links: [
{
name: 'Guides and Tutorials',
href: 'https://github.com/ff14-advanced-market-search/saddlebag-with-pockets/wiki#game-guides',
href: 'https://github.com/ff14-advanced-market-search/saddlebag-with-pockets/wiki#wow-general-guides',
icon: DocumentSearchIcon,
external: true
},
{
name: 'Azeroth Auction Assassin Sniper',
href: 'https://github.com/ff14-advanced-market-search/AzerothAuctionAssassin/releases/latest',
href: 'https://github.com/ff14-advanced-market-search/AzerothAuctionAssassin/blob/main/README.md',
icon: DocumentSearchIcon,
external: true
},
Expand Down Expand Up @@ -263,7 +263,12 @@ const navGroups: Array<{
name: 'Pet Marketshare Overview',
href: '/wow/pet-marketshare',
icon: ChartSquareBarIcon
},
}
]
},
{
title: 'WoW Experimental Tools',
links: [
{
name: 'Server Transfer Trading Search',
href: '/wow/full-scan',
Expand Down
7 changes: 6 additions & 1 deletion app/routes/[sitemap.xml].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export const loader: LoaderFunction = async () => {
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://saddlebagexchange.com/</loc>
<lastmod>2024-05-07T00:27:48+00:00</lastmod>
<lastmod>2024-06-21T00:27:48+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
Expand Down Expand Up @@ -126,6 +126,11 @@ export const loader: LoaderFunction = async () => {
<lastmod>2024-05-07T00:27:48+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://saddlebagexchange.com/wow/marketshare/recommended</loc>
<lastmod>2024-06-21T00:27:48+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://saddlebagexchange.com/wow/shortage-predictor</loc>
<lastmod>2024-05-07T00:27:48+00:00</lastmod>
Expand Down
4 changes: 3 additions & 1 deletion app/routes/_public._index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,9 @@ export default function Index() {
character search, final fantasy xiv sale, universalis ffxiv, choco
bo, xiv server status, final fantasy 14 online server status,
marketboard ffxiv, final fantasy 14 market board, ff14
maintenance, ffxiv server status.
maintenance, ffxiv server status, ffxiah, green hills of
stranglethorn, ff14 hairstyles, loque'nahak, housing lottery,
ffxiv auction house tracker.
</p>
</div>
</div>
Expand Down
6 changes: 3 additions & 3 deletions app/routes/queries._index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ export const meta: MetaFunction = () => {
return {
charset: 'utf-8',
viewport: 'width=device-width,initial-scale=1',
title: 'Saddlebag Exchange: FFXIV tools',
description: 'Saddlebag Exchange: FFXIV tools'
title: 'Saddlebag Exchange: FFXIV Market Board Tools',
description: 'Saddlebag Exchange: FFXIV MarketBoard Tools'
}
}

Expand Down Expand Up @@ -149,7 +149,7 @@ export default function Index() {
board, ffxiv patch notes, final fantasy 14 reddit, ffxiv fanfest,
ffxiv msq list, ffxiv character search, ffxiv fafnir, universalis
ffxiv, ffxiv maintenance jan 15, ffxiv relic weapons, r ffxiv, relic
weapons ffxiv, character search ffxiv
weapons ffxiv, character search ffxiv, FFXIVAH
</p>
</main>
</>
Expand Down
2 changes: 1 addition & 1 deletion app/routes/wow._index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const recommendedQueries = [
description:
'Try our standalone Azeroth Auction Assassin Sniper, designed to snipe across all realms for the best deals seconds after the Blizzard AH API updates so you get there first!',
Icon: DocumentSearchIcon,
href: 'https://github.com/ff14-advanced-market-search/AzerothAuctionAssassin/releases/latest',
href: 'https://github.com/ff14-advanced-market-search/AzerothAuctionAssassin/blob/main/README.md',
external: true
},
{
Expand Down
17 changes: 15 additions & 2 deletions app/routes/wow.legacy-marketshare.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import type { ColumnList } from '~/components/types'
import { getOribosLink } from '~/components/utilities/getOribosLink'
import { getSaddlebagWoWLink } from '~/components/utilities/getSaddlebagWoWLink'
import DebouncedInput from '~/components/Common/DebouncedInput'
import CSVButton from '~/components/utilities/CSVButton'

const inputMap: Record<string, string> = {
homeRealmId: 'Home Realm',
Expand Down Expand Up @@ -317,6 +318,13 @@ const Results = ({
const chartData = getChartData(data, sortBy)

const columnList = getColumnList(region, server)

// Define the columns for the CSV
const csvColumns = columnList.map(({ columnId, header }) => ({
title: header,
value: columnId
}))

return (
<PageWrapper>
<Title title={pageTitle} />
Expand Down Expand Up @@ -349,12 +357,17 @@ const Results = ({
</>
</ContentContainer>

<div className="hidden sm:flex w-full justify-end">
<div className="flex justify-between">
<CSVButton
filename="legacy_marketshare.csv"
data={data}
columns={csvColumns}
/>
<DebouncedInput
onDebouncedChange={(value) => {
setGlobalFilter(value)
}}
className={'p-2 rounded-md'}
className={'hidden sm:block p-2 rounded-md'}
placeholder={'Search...'}
/>
</div>
Expand Down
24 changes: 12 additions & 12 deletions app/routes/wow.marketshare.recommended.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,17 @@ const recommendedQueries = [
href: searchParams.legacy
},
{
name: 'Default Single Realm',
description: 'See what items make the most gold on your realm.',
name: 'High Value Sales Single Realm',
description: 'Find items that have a high sales price on your realm.',
Icon: DocumentSearchIcon,
href: searchParams.defaultSingleRealm
href: searchParams.valueSalesSingleRealm
},
{
name: 'Default Commodity Realm',
name: 'High Value Commodities',
description:
'See what items make the most gold on your region wide commodity market.',
'Identify commodities that have a high sales price on the region-wide market.',
Icon: DocumentSearchIcon,
href: searchParams.defaultCommodity
href: searchParams.valueCommodities
},
{
name: 'Fast Sales Single Realm',
Expand All @@ -114,17 +114,17 @@ const recommendedQueries = [
href: searchParams.fastCommodities
},
{
name: 'High Value Sales Single Realm',
description: 'Find items that have a high sales price on your realm.',
name: 'Default Single Realm',
description: 'See what items make the most gold on your realm.',
Icon: DocumentSearchIcon,
href: searchParams.valueSalesSingleRealm
href: searchParams.defaultSingleRealm
},
{
name: 'High Value Commodities',
name: 'Default Commodity Realm',
description:
'Identify commodities that have a high sales price on the region-wide market.',
'See what items make the most gold on your region wide commodity market.',
Icon: DocumentSearchIcon,
href: searchParams.valueCommodities
href: searchParams.defaultCommodity
},
{
name: 'Toys',
Expand Down
4 changes: 3 additions & 1 deletion app/routes/wow.region-undercut.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const itemAuction = z.object({

const validateInput = z.array(
z.object({
homeRealmName: z.string(),
homeRealmName: z.union([z.string(), z.number()]), // Accepts both string and number
region: z.string(),
user_auctions: z.array(z.union([petAuction, itemAuction]))
})
Expand All @@ -67,7 +67,9 @@ export const action: ActionFunction = async ({ request }) => {

try {
const parsedInput = JSON.parse(input)
// console.log(parsedInput)
const validInput = validateInput.safeParse(parsedInput)
// console.log(validInput)

if (!validInput.success) {
throw new Error('Invalid input')
Expand Down
95 changes: 93 additions & 2 deletions app/routes/wow.upload-timers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const meta: MetaFunction = () => {
return {
charset: 'utf-8',
viewport: 'width=device-width,initial-scale=1',
title: 'Saddlebag Exchange: WoW api data upload timers',
title: 'Realm Status WoW',
description:
'WoW: see what time blizzard updates the auctionhouse api data, this is the time when saddlebag exchange and azeroth auction assassin will update with the latest data!'
}
Expand Down Expand Up @@ -43,7 +43,7 @@ const Index = () => {
if ('data' in results) {
return (
<PageWrapper>
<h1>WoW api data upload timers</h1>
<h1>World of Warcraft API Upload Times</h1>
<SmallTable
// title="Upload Timers"
description="Shows when the WoW auction house data was last uploaded."
Expand All @@ -64,6 +64,97 @@ const Index = () => {
]
}}
/>
<p style={{ fontSize: '1px' }}>
Tracking the World of Warcraft API Upload Times for the Auction
House: An Essential Tool for Gold Makers Introduction In the
ever-evolving world of World of Warcraft (WoW), mastering the
Auction House (AH) is a crucial aspect of gold making. For many
players, understanding the timing and frequency of Auction House
data uploads is a game-changer. The Auction House API provided by
Blizzard offers invaluable data, but knowing when this data is
updated can make all the difference in staying ahead of the market.
This is where the Saddlebag Exchange comes into play, providing a
dedicated page to track these upload times and offering players an
edge in their gold-making endeavors. The Importance of Auction House
Data Auction House data is the lifeblood of any serious gold maker
in WoW. This data includes the current listings, prices, and trends
for every item available on the Auction House. By analyzing this
information, players can: Identify Market Trends: Recognize which
items are in demand and which are not. Set Competitive Prices:
Ensure their listings are competitively priced to attract buyers.
Find Bargains: Spot underpriced items for potential profit. Manage
Inventory: Decide which items to stockpile and which to sell.
However, all these strategies hinge on having up-to-date data.
Knowing when the Auction House data is refreshed through the API is
essential for making timely decisions. Challenges with the Auction
House API Blizzard’s Auction House API is a powerful tool, but it is
not without its challenges. The primary issue for many players is
the unpredictability of upload times. Data uploads can vary due to
several factors, including server load, maintenance schedules, and
other technical issues. During updates or outages, these upload
times can become even more erratic, making it difficult for players
to rely on the API for accurate and timely information. Introducing
Saddlebag Exchange's Upload Timers To address this issue, Saddlebag
Exchange has developed a comprehensive solution for tracking the
Auction House API upload times. Their dedicated page, Saddlebag
Exchange Upload Timers, provides real-time updates and historical
data on the upload frequencies. Key Features of Saddlebag Exchange
Upload Timers: Real-Time Tracking: Monitor the exact times when
Auction House data is uploaded to the API. Historical Data: Access
historical data to identify patterns and predict future uploads.
Alerts and Notifications: Set up alerts to be notified when new data
is available. User-Friendly Interface: Easy-to-navigate interface
with clear and concise information. How It Works Saddlebag Exchange
utilizes sophisticated algorithms and constant monitoring to track
the Auction House API uploads. The system checks for new data at
regular intervals, logs the exact time of each update, and displays
this information in an easily accessible format. This allows players
to plan their activities around the upload times, ensuring they
always have the most current data at their fingertips. Why Timing
Matters for Gold Making The timing of Auction House data uploads can
significantly impact a player’s gold-making strategies. Here are a
few scenarios where knowing the upload times is crucial: Price
Fluctuations: Prices on the Auction House can fluctuate wildly. By
knowing when the data is updated, players can react swiftly to price
changes, buying low and selling high. Market Manipulation: Some
players engage in market manipulation by buying out entire stocks of
an item to control its price. Knowing the upload times can help
players avoid falling victim to these tactics or even engage in them
strategically. Competition: High-demand items often see fierce
competition. Being the first to list an item at a competitive price
after an update can make a significant difference in sales.
Event-Driven Markets: During in-game events or expansions, certain
items can spike in value. Tracking upload times ensures players can
capitalize on these opportunities as soon as they arise. Dealing
with API Downtime Blizzard’s API can experience downtime,
particularly during updates or server maintenance. During these
periods, the lack of fresh data can disrupt gold-making strategies.
Saddlebag Exchange’s upload timers become even more valuable in
these situations. By providing the last known upload times and
predicting the next possible update, players can make informed
decisions even when the API is down. Tips for Managing Downtime:
Monitor Historical Patterns: Use historical data from Saddlebag
Exchange to estimate when the next update might occur. Set Alerts:
Utilize the alert system to get notified immediately when the API
comes back online. Stay Informed: Keep an eye on official Blizzard
channels and community forums for announcements regarding API
status. Plan Ahead: During known maintenance windows, plan your
buying and selling activities around the expected downtime to
minimize disruptions. Conclusion In the competitive world of World
of Warcraft gold making, staying ahead of the market is all about
timing. The Auction House API provides crucial data, but knowing
when this data is updated is the key to leveraging it effectively.
Saddlebag Exchange’s upload timers offer a powerful tool for
tracking these updates, ensuring players always have access to the
freshest information. By utilizing this resource, gold makers can
enhance their strategies, react swiftly to market changes, and
maximize their profits even during API downtimes. Whether you’re a
seasoned Auction House veteran or a newcomer looking to make your
mark, understanding and utilizing the Auction House API upload times
can give you the edge you need to succeed. Visit Saddlebag Exchange
Upload Timers today and take control of your gold-making journey in
World of Warcraft.
</p>
</PageWrapper>
)
}
Expand Down
Loading

0 comments on commit 228eab8

Please sign in to comment.