Update app.py
Browse files
app.py
CHANGED
@@ -115,6 +115,8 @@ if 'last_chat_update' not in st.session_state:
|
|
115 |
st.session_state.last_chat_update = 0
|
116 |
if 'displayed_chat_lines' not in st.session_state:
|
117 |
st.session_state.displayed_chat_lines = []
|
|
|
|
|
118 |
|
119 |
# Timestamp wizardry - clock ticks with flair! β°π©
|
120 |
def format_timestamp_prefix():
|
@@ -477,7 +479,7 @@ def create_streamlit_interface():
|
|
477 |
st.session_state.message_text = ''
|
478 |
st.rerun()
|
479 |
|
480 |
-
# Image paste component
|
481 |
components.html(
|
482 |
"""
|
483 |
<div id="paste-target">Paste an image here (Ctrl+V)</div>
|
@@ -495,6 +497,11 @@ def create_streamlit_interface():
|
|
495 |
value: e.target.result
|
496 |
}, '*');
|
497 |
pasteTarget.innerHTML = '<p>Image pasted! Processing...</p>';
|
|
|
|
|
|
|
|
|
|
|
498 |
};
|
499 |
reader.readAsDataURL(blob);
|
500 |
}
|
@@ -503,20 +510,19 @@ def create_streamlit_interface():
|
|
503 |
});
|
504 |
</script>
|
505 |
""",
|
506 |
-
height=100
|
507 |
-
key="image_paste_component"
|
508 |
)
|
509 |
|
510 |
-
#
|
511 |
-
if
|
512 |
-
pasted_image_data = st.session_state.
|
513 |
-
if isinstance(pasted_image_data, str)
|
514 |
st.session_state.pasted_image_data = pasted_image_data
|
515 |
filename = await save_pasted_image(st.session_state.pasted_image_data, st.session_state.username)
|
516 |
if filename:
|
517 |
await save_chat_entry(st.session_state.username, f"Pasted image: {filename}")
|
518 |
st.session_state.pasted_image_data = None
|
519 |
-
|
520 |
st.rerun()
|
521 |
|
522 |
st.subheader("Media Gallery π¨πΆπ₯")
|
|
|
115 |
st.session_state.last_chat_update = 0
|
116 |
if 'displayed_chat_lines' not in st.session_state:
|
117 |
st.session_state.displayed_chat_lines = []
|
118 |
+
if 'pasted_image_data_temp' not in st.session_state:
|
119 |
+
st.session_state.pasted_image_data_temp = None
|
120 |
|
121 |
# Timestamp wizardry - clock ticks with flair! β°π©
|
122 |
def format_timestamp_prefix():
|
|
|
479 |
st.session_state.message_text = ''
|
480 |
st.rerun()
|
481 |
|
482 |
+
# Image paste component without key
|
483 |
components.html(
|
484 |
"""
|
485 |
<div id="paste-target">Paste an image here (Ctrl+V)</div>
|
|
|
497 |
value: e.target.result
|
498 |
}, '*');
|
499 |
pasteTarget.innerHTML = '<p>Image pasted! Processing...</p>';
|
500 |
+
// Trigger a custom event to notify Python
|
501 |
+
window.parent.postMessage({
|
502 |
+
type: 'streamlit:imagePasted',
|
503 |
+
value: e.target.result
|
504 |
+
}, '*');
|
505 |
};
|
506 |
reader.readAsDataURL(blob);
|
507 |
}
|
|
|
510 |
});
|
511 |
</script>
|
512 |
""",
|
513 |
+
height=100
|
|
|
514 |
)
|
515 |
|
516 |
+
# Custom JavaScript listener for pasted image (simulated via session state)
|
517 |
+
if 'pasted_image_data_temp' in st.session_state and st.session_state.pasted_image_data_temp and st.session_state.pasted_image_data != st.session_state.pasted_image_data_temp:
|
518 |
+
pasted_image_data = st.session_state.pasted_image_data_temp
|
519 |
+
if isinstance(pasted_image_data, str):
|
520 |
st.session_state.pasted_image_data = pasted_image_data
|
521 |
filename = await save_pasted_image(st.session_state.pasted_image_data, st.session_state.username)
|
522 |
if filename:
|
523 |
await save_chat_entry(st.session_state.username, f"Pasted image: {filename}")
|
524 |
st.session_state.pasted_image_data = None
|
525 |
+
st.session_state.pasted_image_data_temp = None # Clear after processing
|
526 |
st.rerun()
|
527 |
|
528 |
st.subheader("Media Gallery π¨πΆπ₯")
|