diff --git a/app/src/features/myspace/retrieval-engine.js b/app/src/features/myspace/retrieval-engine.js index 5ff2f4b..d35e027 100644 --- a/app/src/features/myspace/retrieval-engine.js +++ b/app/src/features/myspace/retrieval-engine.js @@ -1,19 +1,24 @@ const SUBJECT_ALIASES = { - DBMS: ['database', 'db', 'normalization', 'sql'], - 'P&S': ['math', 'statistics', 'probability', 'permutation', 'combination'], - OS: ['operating systems', 'paging', 'cpu', 'memory'], - CG: ['graphics', 'z buffer', 'transformation', 'rendering'], - PM: ['project', 'sprint', 'timeline'], + DBMS: ['database', 'db', 'normalization', 'sql', 'normal form', 'normal forms'], + 'P&S': ['math', 'statistics', 'probability', 'permutation', 'combination', 'stats'], + OS: ['operating systems', 'operating system', 'paging', 'cpu', 'memory', 'process'], + CG: ['graphics', 'computer graphics', 'z buffer', 'transformation', 'rendering'], + PM: ['project', 'sprint', 'timeline', 'project management', 'submission'], Placement: ['interview', 'aptitude', 'company', 'job'], }; const CONTEXT_ALIASES = { + assignment: ['homework', 'submission', 'task', 'practical file', 'writeup'], blackboard: ['board', 'chalkboard', 'class board'], - screenshot: ['screen', 'slide', 'capture'], - image: ['photo', 'picture'], - revision: ['study', 'prep', 'practice'], + image: ['photo', 'picture', 'gallery'], + lab: ['practical', 'experiment', 'lab manual', 'lab file'], + lecture: ['class', 'slides', 'slide', 'session'], + notes: ['note', 'study material', 'material', 'handout', 'summary'], + revision: ['study', 'prep', 'practice', 'exam prep', 'revise'], + screenshot: ['screen', 'slide', 'capture', 'screen grab'], + timetable: ['schedule', 'routine', 'weekly plan', 'class schedule'], }; export function rankMyspaceItems(items, query, subject = 'All') { diff --git a/app/src/screens/HangoutScreen.jsx b/app/src/screens/HangoutScreen.jsx index d97e5db..788021f 100644 --- a/app/src/screens/HangoutScreen.jsx +++ b/app/src/screens/HangoutScreen.jsx @@ -506,10 +506,23 @@ export default function HangoutScreen({ onOpenDrawer, avatarLabel, sessionToken, ))} {rooms.length === 0 ? ( - No rooms yet + + + + No active hangouts - Create the first study room or join one from a Sentri link. + Start a study room, paste a room code, or keep this page open while a friend shares a Sentri link. + + void handleCreateRoom()} disabled={loadingAction !== 'idle'}> + + Create room + + void handleJoinByCode()} disabled={loadingAction !== 'idle'}> + + Join by code + + ) : null} @@ -1134,6 +1147,15 @@ const styles = StyleSheet.create({ paddingHorizontal: 16, paddingVertical: 14, }, + emptyRoomsIcon: { + width: 44, + height: 44, + borderRadius: 16, + backgroundColor: theme.colors.accentSoft, + alignItems: 'center', + justifyContent: 'center', + marginBottom: 12, + }, emptyRoomsTitle: { color: theme.colors.text, fontSize: 16, @@ -1145,6 +1167,36 @@ const styles = StyleSheet.create({ fontSize: 13, lineHeight: 19, }, + emptyActionGrid: { + marginTop: 14, + flexDirection: 'row', + gap: 10, + }, + emptyActionButton: { + flex: 1, + minHeight: 44, + borderRadius: 16, + backgroundColor: theme.colors.accent, + borderWidth: 1, + borderColor: theme.colors.accent, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + gap: 8, + paddingHorizontal: 10, + }, + emptyActionButtonGhost: { + backgroundColor: theme.colors.surface, + borderColor: theme.colors.line, + }, + emptyActionText: { + color: '#FFFFFF', + fontSize: 13, + fontWeight: '800', + }, + emptyActionTextGhost: { + color: theme.colors.accentStrong, + }, sectionHeader: { flexDirection: 'row', justifyContent: 'space-between',