|
| 1 | +import os |
| 2 | + |
| 3 | +from dash import dcc |
| 4 | +import feffery_antd_components as fac |
| 5 | +import feffery_markdown_components as fmc |
| 6 | +from dash.dependencies import Input, Output |
| 7 | + |
| 8 | +from server import app |
| 9 | +from configs.base_config import BaseConfig |
| 10 | + |
| 11 | + |
| 12 | +def render(): |
| 13 | + """渲染版本更新日志通知""" |
| 14 | + |
| 15 | + if BaseConfig.enable_version_changelog_modal: |
| 16 | + return fac.Fragment( |
| 17 | + [ |
| 18 | + # 最近一次已读版本标识 |
| 19 | + dcc.Store( |
| 20 | + id="core-page-version-changelog-viewed-version", |
| 21 | + storage_type="local", |
| 22 | + ), |
| 23 | + # 当前版本更新内容模态框 |
| 24 | + fac.AntdModal( |
| 25 | + fmc.FefferyMarkdown( |
| 26 | + markdownStr=open( |
| 27 | + os.path.join( |
| 28 | + BaseConfig.version_changelog_markdown_folder, |
| 29 | + "{}.md".format(BaseConfig.app_version), |
| 30 | + ), |
| 31 | + encoding="utf-8", |
| 32 | + ).read(), |
| 33 | + ), |
| 34 | + id="core-page-version-changelog-modal", |
| 35 | + title="{}版本更新内容".format(BaseConfig.app_version), |
| 36 | + renderFooter=True, |
| 37 | + cancelButtonProps={"style": {"display": "none"}}, |
| 38 | + okText="已阅", |
| 39 | + ), |
| 40 | + ] |
| 41 | + ) |
| 42 | + |
| 43 | + |
| 44 | +@app.callback( |
| 45 | + Output("core-page-version-changelog-modal", "visible"), |
| 46 | + Input("core-page-version-changelog-viewed-version", "data"), |
| 47 | +) |
| 48 | +def handle_version_changelog_visible(version): |
| 49 | + """判断是否显示版本更新内容通知""" |
| 50 | + if version != BaseConfig.app_version: |
| 51 | + return True |
| 52 | + |
| 53 | + |
| 54 | +@app.callback( |
| 55 | + Output("core-page-version-changelog-viewed-version", "data"), |
| 56 | + Input("core-page-version-changelog-modal", "okCounts"), |
| 57 | + prevent_initial_call=True, |
| 58 | +) |
| 59 | +def update_version_changelog_viewed_version(okCounts): |
| 60 | + """在用户点击“已阅”后,更新最近一次已读版本标识""" |
| 61 | + return BaseConfig.app_version |
0 commit comments