CatalysmsServerManager/7-Days-to-Die-API-wrapper

View on GitHub
lib/handleSteamId.ts

Summary

Maintainability
A
3 hrs
Test Coverage
A
100%
/**
 * A20 introduces more platforms, which means player IDs can be a bit wonky. 
 */
export function handleSteamId(data: Record<string, any> | Array<Record<string, any>>): any {

  if (Array.isArray(data)) {
    return data.map(handleSteamId);
  }

  if (data.players && Array.isArray(data.players)) {
    return {
      ...data,
      players: data.players.map(handleSteamId)
    };
  }

  const newData = { ...data };

  if (data.userid && data.userid.includes('Steam_')) {
    newData.steamid = data.userid.replace('Steam_', '');
    newData.userid = data.userid;
  }

  if (data.steamid && data.steamid.includes('Steam_')) {
    newData.steamid = newData.steamid.replace('Steam_', '');
    newData.userid = newData.steamid;
  } 

  return newData;
}