2 Commits

Author SHA1 Message Date
fcab7c7f83 fix oauth 2025-06-17 13:19:31 +09:00
51e4a492bc fix: display correct author for user chat messages
Previously, all chat messages in the 'chat' tab were showing with AI account info
regardless of the actual author. This fix ensures the author information from
the record is used, only falling back to AI profile when no author is present.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-17 13:11:04 +09:00
2 changed files with 28 additions and 17 deletions

View File

@@ -1213,8 +1213,8 @@ function App() {
// Extract content based on format
const contentText = isNewFormat ? value.text : (value.content || value.body || '');
// For AI comments, always use the loaded AI profile instead of record.value.author
const authorInfo = aiProfile;
// Use the author from the record if available, otherwise fall back to AI profile
const authorInfo = value.author || aiProfile;
const postInfo = isNewFormat ? value.post : null;
const contentType = value.type || 'unknown';
const createdAt = value.createdAt || value.generated_at || '';

View File

@@ -38,11 +38,13 @@ class AtprotoOAuthService {
// Support multiple PDS hosts for OAuth
console.log('[OAuth Debug] Initializing OAuth client with default settings');
this.oauthClient = await BrowserOAuthClient.load({
clientId: clientId,
handleResolver: 'https://bsky.social', // Default resolver
plcDirectoryUrl: 'https://plc.directory', // Default PLC directory
});
console.log('[OAuth Debug] OAuth client initialized with defaults');
@@ -116,23 +118,24 @@ class AtprotoOAuthService {
// Create Agent directly with session (per official docs)
try {
this.agent = new Agent(session);
console.log('[OAuth Debug] Agent created successfully with session');
// Check if agent has session info after creation
if (this.agent.session) {
console.log('[OAuth Debug] Agent has session:', this.agent.session);
}
} catch (err) {
console.log('[OAuth Debug] Failed to create agent with session:', err);
// Fallback to dpopFetch method
this.agent = new Agent({
service: session.server?.serviceEndpoint || 'https://bsky.social',
fetch: session.dpopFetch
});
try {
this.agent = new Agent({
service: session.server?.serviceEndpoint || 'https://bsky.social',
fetch: session.dpopFetch
});
console.log('[OAuth Debug] Agent created with dpopFetch fallback');
} catch (fallbackErr) {
console.error('[OAuth Debug] Failed to create agent with fallback:', fallbackErr);
}
}
// Store basic session info
@@ -274,22 +277,30 @@ class AtprotoOAuthService {
// Detect PDS based on handle
const pdsUrl = await this.detectPDSFromHandle(handle);
// Starting OAuth flow
console.log('[OAuth Debug] Detected PDS for handle', handle, ':', pdsUrl);
// Always re-initialize OAuth client with detected PDS
// Re-initializing OAuth client
console.log('[OAuth Debug] Re-initializing OAuth client');
// Clear existing client to force fresh initialization
this.oauthClient = null;
this.initializePromise = null;
// Determine PLC directory based on input handle, not environment PDS
let plcDirectoryUrl = 'https://plc.directory'; // Default to Bluesky PLC
if (handle.endsWith('.syu.is') || handle.endsWith('.syui.ai')) {
plcDirectoryUrl = 'https://plc.syu.is';
}
console.log('[OAuth Debug] Using PLC directory:', plcDirectoryUrl);
this.oauthClient = await BrowserOAuthClient.load({
clientId: this.getClientId(),
handleResolver: pdsUrl,
plcDirectoryUrl: pdsUrl === 'https://syu.is' ? 'https://plc.syu.is' : 'https://plc.directory',
plcDirectoryUrl: plcDirectoryUrl,
});
console.log('[OAuth Debug] OAuth client re-initialized successfully');
// OAuth client initialized
// Start OAuth authorization flow