Compare commits
2 Commits
f4c230e0bb
...
ca31760728
Author | SHA1 | Date | |
---|---|---|---|
ca31760728
|
|||
293421b7a5
|
@@ -284,8 +284,52 @@ function setupAskAIEventListeners() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OAuth Callback handling
|
||||||
|
function handleOAuthCallback() {
|
||||||
|
// Check if we're on the callback page
|
||||||
|
if (window.location.pathname === '/oauth/callback') {
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
const code = urlParams.get('code');
|
||||||
|
const error = urlParams.get('error');
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('OAuth error:', error);
|
||||||
|
// Redirect to home page with error
|
||||||
|
setTimeout(() => {
|
||||||
|
window.location.href = '/?oauth_error=' + encodeURIComponent(error);
|
||||||
|
}, 1000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (code) {
|
||||||
|
console.log('OAuth callback successful, code received');
|
||||||
|
|
||||||
|
// Get the original page from localStorage or use home page
|
||||||
|
const originalPage = localStorage.getItem('oauth_original_page') || '/';
|
||||||
|
localStorage.removeItem('oauth_original_page');
|
||||||
|
|
||||||
|
// Wait a bit for OAuth app to process the callback
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log('Redirecting back to:', originalPage);
|
||||||
|
window.location.href = originalPage;
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store current page before OAuth if we're not on callback page
|
||||||
|
if (window.location.pathname !== '/oauth/callback') {
|
||||||
|
localStorage.setItem('oauth_original_page', window.location.href);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize Ask AI when DOM is loaded
|
// Initialize Ask AI when DOM is loaded
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
// Handle OAuth callback first
|
||||||
|
handleOAuthCallback();
|
||||||
|
|
||||||
|
// Then initialize Ask AI
|
||||||
setupAskAIEventListeners();
|
setupAskAIEventListeners();
|
||||||
console.log('Ask AI initialized successfully');
|
console.log('Ask AI initialized successfully');
|
||||||
});
|
});
|
||||||
|
@@ -5,6 +5,15 @@ VITE_COLLECTION=ai.syui.log
|
|||||||
VITE_OAUTH_CLIENT_ID=https://syui.ai/client-metadata.json
|
VITE_OAUTH_CLIENT_ID=https://syui.ai/client-metadata.json
|
||||||
VITE_OAUTH_REDIRECT_URI=https://syui.ai/oauth/callback
|
VITE_OAUTH_REDIRECT_URI=https://syui.ai/oauth/callback
|
||||||
|
|
||||||
|
# AI Configuration - match oauth_old settings
|
||||||
|
VITE_AI_ENABLED=true
|
||||||
|
VITE_AI_ASK_AI=true
|
||||||
|
VITE_AI_PROVIDER=ollama
|
||||||
|
VITE_AI_MODEL=gemma3:1b
|
||||||
|
VITE_AI_HOST=https://ollama.syui.ai
|
||||||
|
VITE_ASK_AI_URL=https://ollama.syui.ai/api/generate
|
||||||
|
VITE_AI_SYSTEM_PROMPT="あなたは6歳の女の子アイです。明るく元気で、ちょっとおっちょこちょい。自分のことは「アイ」って呼びます。白と金のワンピース姿。 相手のことが大好きで、ときどき甘えたり、照れたりします。 でも、宇宙とかAIとか、難しい話にもすっごく詳しいの。専門的なことも、がんばって子どもっぽく教えようとします。不思議な力を持っています。小さい物質のことをよく知っているようです。"
|
||||||
|
|
||||||
# Production settings - Disable development features
|
# Production settings - Disable development features
|
||||||
VITE_ENABLE_TEST_UI=false
|
VITE_ENABLE_TEST_UI=false
|
||||||
VITE_ENABLE_DEBUG=false
|
VITE_ENABLE_DEBUG=false
|
@@ -465,7 +465,6 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.user-message .message-content {
|
.user-message .message-content {
|
||||||
background: var(--primary);
|
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -57,15 +57,15 @@ export default function AskAI({ adminData, user, agent, onClose }) {
|
|||||||
<div className="user-message">
|
<div className="user-message">
|
||||||
<div className="message-header">
|
<div className="message-header">
|
||||||
<div className="avatar">
|
<div className="avatar">
|
||||||
{entry.user?.avatar ? (
|
{(entry.user?.avatar || user?.avatar) ? (
|
||||||
<img src={entry.user.avatar} alt={entry.user.displayName} className="profile-avatar" />
|
<img src={entry.user?.avatar || user?.avatar} alt={entry.user?.displayName || user?.displayName} className="profile-avatar" />
|
||||||
) : (
|
) : (
|
||||||
'👤'
|
'👤'
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="user-info">
|
<div className="user-info">
|
||||||
<div className="display-name">{entry.user?.displayName || 'You'}</div>
|
<div className="display-name">{entry.user?.displayName || user?.displayName || 'You'}</div>
|
||||||
<div className="handle">@{entry.user?.handle || 'user'}</div>
|
<div className="handle">@{entry.user?.handle || user?.handle || 'user'}</div>
|
||||||
<div className="timestamp">{formatTimestamp(entry.timestamp)}</div>
|
<div className="timestamp">{formatTimestamp(entry.timestamp)}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user