+sub refresh () {
+ if (exists $wikistate{editpage} && exists $wikistate{editpage}{previews}) {
+ # Expire old preview files after one hour.
+ my $expire=time - (60 * 60);
+
+ my @previews;
+ foreach my $file (@{$wikistate{editpage}{previews}}) {
+ my $mtime=(stat("$config{destdir}/$file"))[9];
+ if (defined $mtime && $mtime <= $expire) {
+ # Avoid deleting a preview that was later saved.
+ my $delete=1;
+ foreach my $page (keys %renderedfiles) {
+ if (grep { $_ eq $file } @{$renderedfiles{$page}}) {
+ $delete=0;
+ }
+ }
+ if ($delete) {
+ debug(sprintf(gettext("removing old preview %s"), $file));
+ IkiWiki::prune("$config{destdir}/$file");
+ }
+ }
+ elsif (defined $mtime) {
+ push @previews, $file;
+ }
+ }
+ $wikistate{editpage}{previews}=\@previews;
+ }
+}
+