Skip to content

feat: 系统日历导出支持同步更新#126

Open
CopperKoi wants to merge 8 commits intoBenderBlog:mainfrom
CopperKoi:feat/system-calendar-sync
Open

feat: 系统日历导出支持同步更新#126
CopperKoi wants to merge 8 commits intoBenderBlog:mainfrom
CopperKoi:feat/system-calendar-sync

Conversation

@CopperKoi
Copy link
Copy Markdown
Contributor

去掉系统日历导出名称里的时间戳后缀,改为固定名称.
系统日历导出不再每次都新建日历,而是复用之前导出的系统日历并重建事件.
课程表刷新后会和缓存对比,如果内容发生变化且之前导出的系统日历还存在,则执行日历同步.
兼容旧的导出日历.

late File userDefinedFile;
late ClassTableData classTableData;
late UserDefinedClassData userDefinedClassData;
bool _isClassTableChangedForSystemCalendarSync = false;
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SystemCalendarSync 您可能需要解释一下?我第一眼难以看懂。

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

您好,这里的 SystemCalendarSync 指的是导出到系统日历后的同步

Comment thread lib/page/homepage/refresh.dart Outdated
Future(() => electricity.update()),
Future(() => school_net.update()),
]).then((value) => updateCurrentData()).onError((error, stackTrace) {
]).then((value) async {
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这是在刷新时候自动刷新到日历中吗?

Copy link
Copy Markdown
Contributor Author

@CopperKoi CopperKoi Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

是的,但不是每次刷新都同步。

新课表和本地缓存不同,才认为需要同步

@BenderBlog
Copy link
Copy Markdown
Owner

差不多是你说的意思,我希望多打点注释。
等我先把除课表、考试、物理实验外的状态管理迁移完了,我再合并你的。

@CopperKoi
Copy link
Copy Markdown
Contributor Author

差不多是你说的意思,我希望多打点注释。 等我先把除课表、考试、物理实验外的状态管理迁移完了,我再合并你的。

是的,是我代码习惯不好。我抽空补上一些注释。

@BenderBlog
Copy link
Copy Markdown
Owner

看来您得需要等我彻底重构完状态管理后重新修改了……

@CopperKoi
Copy link
Copy Markdown
Contributor Author

看来您得需要等我彻底重构完状态管理后重新修改了……

好👌🏻

@BenderBlog
Copy link
Copy Markdown
Owner

BenderBlog commented Apr 16, 2026

您可以继续开发了,改一下冲突,然后回答一下:

  • 如何保证当且仅当有真的系统日历里面有课表才会添加?
  • 在学期切换时候咋处理?我看代码推测是直接就更新了。
  • 如果用户要输出两次到系统日历,咋办?

@CopperKoi
Copy link
Copy Markdown
Contributor Author

您可以继续开发了,改一下冲突,然后回答一下:

  • 如何保证当且仅当有真的系统日历里面有课表才会添加?

  • 在学期切换时候咋处理?我看代码推测是直接就更新了。

  • 如果用户要输出两次到系统日历,咋办?

自动同步先看本地有没有保存过 systemCalendarId,然后只按这个 id 去找,这样就能保证您说的第一个问题。

第二个问题是我考虑不周。如果按照我个人喜好的话,我会倾向于留存旧学期的日历并导出一个新学期的,这个我会在解决冲突的时候顺便实现。

第二次手动输出会找到之前那一个导出日历,删掉再按当前数据重建,目的是保证后续自动同步始终只维护一个目标。我想象不到有什么情景需要两份相同的日历。

@CopperKoi
Copy link
Copy Markdown
Contributor Author

您 review 后就可以 merge 了

@BenderBlog
Copy link
Copy Markdown
Owner

稍后吧,未来一周我会忙别的事情。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants