Add Matches page, OkCupid integration, and major UI/feature updates

- New Matches page with match scoring system
- New OkCupid page and API integration
- Enhanced Likes page with scanner improvements and enrichment
- Updated Settings, Discover, Messages, and Chat pages
- Improved auth, GraphQL client, and Stream Chat setup
- Added new backend endpoints (matchScoring.js)
- Removed old Proxyman capture logs
- Updated nginx config and Vite proxy settings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey T
2026-04-16 07:11:21 -05:00
parent 0a725508d2
commit f84786e654
176 changed files with 6828 additions and 1177 deletions
+31 -225
View File
@@ -1,7 +1,6 @@
import { gql } from '@apollo/client/core';
// Experimental queries to discover hidden API endpoints
// Based on patterns: whoLikesMe, whoPingsMe -> try whoILiked, whoIPinged, myLikes, etc.
// Real endpoints discovered in v8.11.0 - replaces old wrong guesses
export const LIKES_PROFILE_FRAGMENT = gql`
fragment LikesProfileFragment on Profile {
@@ -55,198 +54,25 @@ export const LIKES_PROFILE_FRAGMENT = gql`
}
`;
// Attempt 1: whoILiked (mirror of whoLikesMe)
export const WHO_I_LIKED_QUERY = gql`
// pastLikes - profiles you've liked (new in v8.11.0)
export const PAST_LIKES_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query WhoILiked($limit: Int, $cursor: String, $sortBy: SortBy!) {
interactions: whoILiked(
input: {sortBy: $sortBy}
limit: $limit
cursor: $cursor
) {
query pastLikes($cursor: String, $input: PastLikesQueryInput!, $limit: Int) {
pastLikes(cursor: $cursor, input: $input, limit: $limit) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 2: myLikes
export const MY_LIKES_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query MyLikes($limit: Int, $cursor: String, $sortBy: SortBy!) {
interactions: myLikes(
input: {sortBy: $sortBy}
limit: $limit
cursor: $cursor
) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 3: sentLikes
export const SENT_LIKES_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query SentLikes($limit: Int, $cursor: String, $sortBy: SortBy!) {
interactions: sentLikes(
input: {sortBy: $sortBy}
limit: $limit
cursor: $cursor
) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 4: likedProfiles
export const LIKED_PROFILES_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query LikedProfiles($limit: Int, $cursor: String, $sortBy: SortBy!) {
interactions: likedProfiles(
input: {sortBy: $sortBy}
limit: $limit
cursor: $cursor
) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 5: profilesILiked
export const PROFILES_I_LIKED_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query ProfilesILiked($limit: Int, $cursor: String, $sortBy: SortBy!) {
interactions: profilesILiked(
input: {sortBy: $sortBy}
limit: $limit
cursor: $cursor
) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 6: outgoingLikes (opposite of incoming likes)
export const OUTGOING_LIKES_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query OutgoingLikes($limit: Int, $cursor: String, $sortBy: SortBy!) {
interactions: outgoingLikes(
input: {sortBy: $sortBy}
limit: $limit
cursor: $cursor
) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 7: Try interactions query with direction parameter
export const INTERACTIONS_OUTGOING_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query InteractionsOutgoing($limit: Int, $cursor: String, $sortBy: SortBy!, $direction: String) {
interactions(
input: {sortBy: $sortBy, direction: $direction}
limit: $limit
cursor: $cursor
) {
nodes {
...LikesProfileFragment
__typename
}
pageInfo {
total
hasNextPage
nextPageCursor
__typename
}
__typename
}
}
`;
// Attempt 8: Try whoLikesMe with a filter for mine=LIKED
export const FILTERED_WHO_I_LIKED_MUTATION = gql`
${LIKES_PROFILE_FRAGMENT}
mutation FilteredWhoILiked($input: FilteredInteractionInput!, $cursor: String) {
filteredWhoILiked(input: $input, cursor: $cursor) {
filters {
ageRange
desires
lookingFor
sexualities
__typename
}
profiles {
nodes {
isPing
interactionSentAt
profile {
...LikesProfileFragment
__typename
}
pageInfo {
total
unfilteredTotal
hasNextPage
nextPageCursor
__typename
}
__typename
}
pageInfo {
hasNextPage
nextPageCursor
total
unfilteredTotal
__typename
}
__typename
@@ -254,47 +80,27 @@ export const FILTERED_WHO_I_LIKED_MUTATION = gql`
}
`;
// Direct profile lookup query - to test if profile IDs from WhoLikesMe return real data
export const DIRECT_PROFILE_LOOKUP_QUERY = gql`
query DirectProfileLookup($profileId: String!) {
profile(id: $profileId) {
id
age
gender
sexuality
imaginaryName
bio
desires
connectionGoals
verificationStatus
distance {
km
mi
__typename
}
photos {
id
pictureUrl
pictureUrls {
small
medium
large
// pastDislikes - profiles you've passed (new in v8.11.0)
export const PAST_DISLIKES_QUERY = gql`
${LIKES_PROFILE_FRAGMENT}
query pastDislikes($cursor: String, $input: PastDislikesQueryInput!, $limit: Int) {
pastDislikes(cursor: $cursor, input: $input, limit: $limit) {
nodes {
interactionSentAt
profile {
...LikesProfileFragment
__typename
}
publicId
__typename
}
pageInfo {
hasNextPage
nextPageCursor
total
unfilteredTotal
__typename
}
__typename
}
}
`;
// List of all experimental queries to try
export const EXPERIMENTAL_QUERIES = [
{ name: 'whoILiked', query: WHO_I_LIKED_QUERY },
{ name: 'myLikes', query: MY_LIKES_QUERY },
{ name: 'sentLikes', query: SENT_LIKES_QUERY },
{ name: 'likedProfiles', query: LIKED_PROFILES_QUERY },
{ name: 'profilesILiked', query: PROFILES_I_LIKED_QUERY },
{ name: 'outgoingLikes', query: OUTGOING_LIKES_QUERY },
];