feat: Add Steam account linking with team creation (#274)

## Description
<!-- Briefly describe the purpose and scope of your changes -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a real-time Steam login flow using QR codes and server-sent
events (SSE) for team creation and authentication.
- Added Steam account and friend management, including secure credential
storage and friend list synchronization.
- Integrated Steam login endpoints into the API, enabling QR code-based
login and automated team setup.

- **Improvements**
- Enhanced data security by implementing encrypted storage for sensitive
tokens.
- Updated database schema to support Steam accounts, teams, memberships,
and social connections.
- Refined type definitions and consolidated account-related information
for improved consistency.

- **Bug Fixes**
  - Fixed trade ban status representation for Steam accounts.

- **Chores**
- Removed legacy C# Steam authentication service and related
configuration files.
  - Updated and cleaned up package dependencies and development tooling.
  - Streamlined type declaration files and resource definitions.

- **Style**
- Redesigned the team creation page UI with a modern, animated QR code
login interface.

- **Documentation**
  - Updated OpenAPI documentation for new Steam login endpoints.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Wanjohi
2025-05-09 01:13:44 +03:00
committed by GitHub
parent 70d629227a
commit 7e69af977b
51 changed files with 2332 additions and 2805 deletions

View File

@@ -33,22 +33,12 @@ export function useStorage() {
}
import { createEffect } from "solid-js";
import { Team } from "@nestri/core/team/index";
import { useOpenAuth } from "@openauthjs/solid";
import { Steam } from "@nestri/core/steam/index";
import { Account } from "@nestri/core/account/index";
import { createInitializedContext } from "../common/context";
type Storage = {
accounts: Record<string, {
id: string
name: string;
email: string
avatarUrl?: string
teams: Team.Info[];
discriminator: number
polarCustomerID: string;
steamAccounts: Steam.Info[];
}>
accounts: Record<string, Account.Info>
}
export const { use: useAccount, provider: AccountProvider } = createInitializedContext("AccountContext", () => {