Skip to content

Commit 032e45a

Browse files
authored
Merge pull request #1814 from Eitot/feature/refresh-folder-data
Update folder data even when the feed has no articles Change last_update to reflect when new articles were last added.
2 parents 196afbb + 2a70611 commit 032e45a

File tree

3 files changed

+62
-68
lines changed

3 files changed

+62
-68
lines changed

Vienna/Interfaces/Base.lproj/InfoWindow.xib

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
2+
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
33
<dependencies>
44
<deployment identifier="macosx"/>
5-
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
5+
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22690"/>
66
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
77
</dependencies>
88
<objects>
@@ -31,7 +31,7 @@
3131
<windowCollectionBehavior key="collectionBehavior" moveToActiveSpace="YES" fullScreenAuxiliary="YES"/>
3232
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
3333
<rect key="contentRect" x="120" y="530" width="270" height="388"/>
34-
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
34+
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
3535
<view key="contentView" id="6">
3636
<rect key="frame" x="0.0" y="0.0" width="270" height="388"/>
3737
<autoresizingMask key="autoresizingMask"/>
@@ -61,15 +61,15 @@
6161
</textFieldCell>
6262
</textField>
6363
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="33">
64-
<rect key="frame" x="46" y="346" width="87" height="14"/>
65-
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Last Refreshed:" id="105">
64+
<rect key="frame" x="46" y="346" width="78" height="14"/>
65+
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Last Updated:" id="105">
6666
<font key="font" metaFont="smallSystem"/>
6767
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
6868
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
6969
</textFieldCell>
7070
</textField>
7171
<textField focusRingType="none" verticalHuggingPriority="750" preferredMaxLayoutWidth="200" translatesAutoresizingMaskIntoConstraints="NO" id="34">
72-
<rect key="frame" x="134" y="346" width="123" height="14"/>
72+
<rect key="frame" x="125" y="346" width="132" height="14"/>
7373
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="left" id="106">
7474
<font key="font" metaFont="smallSystem"/>
7575
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>

Vienna/Interfaces/mul.lproj/InfoWindow.xcstrings

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,132 +2,132 @@
22
"sourceLanguage" : "en",
33
"strings" : {
44
"105.title" : {
5-
"comment" : "Class = \"NSTextFieldCell\"; title = \"Last Refreshed:\"; ObjectID = \"105\";",
5+
"comment" : "Class = \"NSTextFieldCell\"; title = \"Last Updated:\"; ObjectID = \"105\";",
66
"extractionState" : "extracted_with_value",
77
"localizations" : {
88
"cs" : {
99
"stringUnit" : {
10-
"state" : "translated",
10+
"state" : "needs_review",
1111
"value" : "Obnoveno:"
1212
}
1313
},
1414
"da" : {
1515
"stringUnit" : {
16-
"state" : "translated",
16+
"state" : "needs_review",
1717
"value" : "Sidst opdateret:"
1818
}
1919
},
2020
"de" : {
2121
"stringUnit" : {
22-
"state" : "translated",
22+
"state" : "needs_review",
2323
"value" : "Letzte Aktualisierung:"
2424
}
2525
},
2626
"en" : {
2727
"stringUnit" : {
2828
"state" : "new",
29-
"value" : "Last Refreshed:"
29+
"value" : "Last Updated:"
3030
}
3131
},
3232
"es" : {
3333
"stringUnit" : {
34-
"state" : "translated",
34+
"state" : "needs_review",
3535
"value" : "Última actualización:"
3636
}
3737
},
3838
"eu" : {
3939
"stringUnit" : {
40-
"state" : "translated",
40+
"state" : "needs_review",
4141
"value" : "Azken Eguneratuak:"
4242
}
4343
},
4444
"fr" : {
4545
"stringUnit" : {
46-
"state" : "translated",
46+
"state" : "needs_review",
4747
"value" : "Dernière actualisation :"
4848
}
4949
},
5050
"gl" : {
5151
"stringUnit" : {
52-
"state" : "translated",
52+
"state" : "needs_review",
5353
"value" : "Última actualización:"
5454
}
5555
},
5656
"it" : {
5757
"stringUnit" : {
58-
"state" : "translated",
58+
"state" : "needs_review",
5959
"value" : "Ultimo Aggiornamento:"
6060
}
6161
},
6262
"ja" : {
6363
"stringUnit" : {
64-
"state" : "translated",
64+
"state" : "needs_review",
6565
"value" : "最後の更新:"
6666
}
6767
},
6868
"ko" : {
6969
"stringUnit" : {
70-
"state" : "translated",
70+
"state" : "needs_review",
7171
"value" : "최종 갱신일:"
7272
}
7373
},
7474
"lt" : {
7575
"stringUnit" : {
76-
"state" : "translated",
76+
"state" : "needs_review",
7777
"value" : "Paskutinį kartą atnaujinta:"
7878
}
7979
},
8080
"nl" : {
8181
"stringUnit" : {
82-
"state" : "translated",
82+
"state" : "needs_review",
8383
"value" : "Laatste keer vernieuwd:"
8484
}
8585
},
8686
"pt-BR" : {
8787
"stringUnit" : {
88-
"state" : "translated",
88+
"state" : "needs_review",
8989
"value" : "Última atualização:"
9090
}
9191
},
9292
"pt-PT" : {
9393
"stringUnit" : {
94-
"state" : "translated",
94+
"state" : "needs_review",
9595
"value" : "Última actualização:"
9696
}
9797
},
9898
"ru" : {
9999
"stringUnit" : {
100-
"state" : "translated",
100+
"state" : "needs_review",
101101
"value" : "Последние обновленные:"
102102
}
103103
},
104104
"sv" : {
105105
"stringUnit" : {
106-
"state" : "translated",
106+
"state" : "needs_review",
107107
"value" : "Senaste uppdaterad:"
108108
}
109109
},
110110
"tr" : {
111111
"stringUnit" : {
112-
"state" : "translated",
112+
"state" : "needs_review",
113113
"value" : "En son yenilendi:"
114114
}
115115
},
116116
"uk" : {
117117
"stringUnit" : {
118-
"state" : "translated",
118+
"state" : "needs_review",
119119
"value" : "Останнє оновлення:"
120120
}
121121
},
122122
"zh-Hans" : {
123123
"stringUnit" : {
124-
"state" : "translated",
124+
"state" : "needs_review",
125125
"value" : "上次更新:"
126126
}
127127
},
128128
"zh-Hant" : {
129129
"stringUnit" : {
130-
"state" : "translated",
130+
"state" : "needs_review",
131131
"value" : "上次重新整理:"
132132
}
133133
}

Vienna/Sources/Fetching/RefreshManager.m

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -609,9 +609,6 @@ -(void)folderRefreshCompleted:(NSMutableURLRequest *)connector response:(NSURLRe
609609

610610
if (responseStatusCode == 304) {
611611
// No modification from last check
612-
613-
[dbManager setLastUpdate:[NSDate date] forFolder:folderId];
614-
615612
[self setFolderErrorFlag:folder flag:NO];
616613
[connectorItem appendDetail:NSLocalizedString(@"Got HTTP status 304 - No news from last check", nil)];
617614
dispatch_async(dispatch_get_main_queue(), ^{
@@ -729,14 +726,6 @@ -(void)finalizeFolderRefresh:(NSDictionary *)parameters
729726
@"Number of bytes received, e.g. 1 MB received"),
730727
byteCount]];
731728

732-
if (newFeed.items.count == 0) {
733-
// Mark the feed as empty
734-
dispatch_async(dispatch_get_main_queue(), ^{
735-
[connectorItem setStatus:NSLocalizedString(@"No articles in feed", nil)];
736-
});
737-
return;
738-
}
739-
740729
// Extract the latest title and description
741730
NSString * feedTitle = newFeed.title;
742731
NSString * feedDescription = newFeed.feedDescription;
@@ -750,6 +739,38 @@ -(void)finalizeFolderRefresh:(NSDictionary *)parameters
750739
feedLink = [NSURL URLWithString:feedLink relativeToURL:url].absoluteString;
751740
}
752741

742+
if (feedTitle != nil && !feedTitle.vna_isBlank && [folder.name hasPrefix:[Database untitledFeedFolderName]]) {
743+
// If there's an existing feed with this title, make ours unique
744+
// BUGBUG: This duplicates logic in database.m so consider moving it there.
745+
NSString * oldFeedTitle = feedTitle;
746+
NSString * newFeedTitle = feedTitle;
747+
NSUInteger index = 1;
748+
749+
while (([dbManager folderFromName:newFeedTitle]) != nil) {
750+
newFeedTitle = [NSString stringWithFormat:@"%@ (%lu)", oldFeedTitle, (unsigned long)index++];
751+
}
752+
753+
connectorItem.name = newFeedTitle;
754+
[dbManager setName:newFeedTitle forFolder:folderId];
755+
}
756+
if (feedDescription != nil) {
757+
[dbManager setDescription:feedDescription forFolder:folderId];
758+
}
759+
if (feedLink != nil) {
760+
[dbManager setHomePage:feedLink forFolder:folderId];
761+
}
762+
// Remember the last modified date
763+
if (lastModifiedString != nil && lastModifiedString.length > 0) {
764+
[dbManager setLastUpdateString:lastModifiedString forFolder:folderId];
765+
}
766+
767+
if (newFeed.items.count == 0) {
768+
// Mark the feed as empty
769+
dispatch_async(dispatch_get_main_queue(), ^{
770+
[connectorItem setStatus:NSLocalizedString(@"No articles in feed", nil)];
771+
});
772+
return;
773+
}
753774

754775
// We'll be collecting articles into this array
755776
NSMutableArray *articleArray = [NSMutableArray array];
@@ -865,36 +886,9 @@ -(void)finalizeFolderRefresh:(NSDictionary *)parameters
865886
}
866887
}
867888

868-
869-
// A notify is only needed if we added any new articles.
870-
if (feedTitle != nil && !feedTitle.vna_isBlank && [folder.name hasPrefix:[Database untitledFeedFolderName]]) {
871-
// If there's an existing feed with this title, make ours unique
872-
// BUGBUG: This duplicates logic in database.m so consider moving it there.
873-
NSString * oldFeedTitle = feedTitle;
874-
NSString * newFeedTitle = feedTitle;
875-
NSUInteger index = 1;
876-
877-
while (([dbManager folderFromName:newFeedTitle]) != nil) {
878-
newFeedTitle = [NSString stringWithFormat:@"%@ (%lu)", oldFeedTitle, (unsigned long)index++];
879-
}
880-
881-
connectorItem.name = newFeedTitle;
882-
[dbManager setName:newFeedTitle forFolder:folderId];
883-
}
884-
if (feedDescription != nil) {
885-
[dbManager setDescription:feedDescription forFolder:folderId];
886-
}
887-
if (feedLink != nil) {
888-
[dbManager setHomePage:feedLink forFolder:folderId];
889-
}
890-
891-
// Remember the last modified date
892-
if (lastModifiedString != nil && lastModifiedString.length > 0) {
893-
[dbManager setLastUpdateString:lastModifiedString forFolder:folderId];
889+
if (newArticlesFromFeed > 0u) {
890+
[dbManager setLastUpdate:[NSDate date] forFolder:folderId];
894891
}
895-
// Set the last update date for this folder.
896-
[dbManager setLastUpdate:[NSDate date] forFolder:folderId];
897-
898892

899893
// Mark the feed as succeeded
900894
[self setFolderErrorFlag:folder flag:NO];

0 commit comments

Comments
 (0)