mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-09-14 10:32:10 +02:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
d91b4bd1f3 | |||
c0c64f6d62 | |||
1a5d2af779 | |||
f40a33192b | |||
ca4900aff0 | |||
56fc9e2d40 | |||
d2174c0b69 | |||
9f76754ad3 |
@@ -42,7 +42,7 @@ namespace TweetDuck.Core.Other.Analytics{
|
||||
this.saveTimer.Elapsed += saveTimer_Elapsed;
|
||||
|
||||
if (this.File.LastCollectionVersion != Program.VersionTag){
|
||||
ScheduleReportIn(TimeSpan.FromHours(12), string.Empty);
|
||||
ScheduleReportIn(TimeSpan.FromHours(8), string.Empty);
|
||||
}
|
||||
else{
|
||||
RestartTimer();
|
||||
@@ -90,7 +90,7 @@ namespace TweetDuck.Core.Other.Analytics{
|
||||
TimeSpan diff = DateTime.Now.Subtract(File.LastDataCollection);
|
||||
int minutesTillNext = (int)(CollectionInterval.TotalMinutes-Math.Floor(diff.TotalMinutes));
|
||||
|
||||
currentTimer.Interval = Math.Max(minutesTillNext, 1)*60000;
|
||||
currentTimer.Interval = Math.Max(minutesTillNext, 2)*60000;
|
||||
currentTimer.Start();
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ namespace TweetDuck{
|
||||
public const string BrandName = "TweetDuck";
|
||||
public const string Website = "https://tweetduck.chylex.com";
|
||||
|
||||
public const string VersionTag = "1.13.0.1";
|
||||
public const string VersionTag = "1.13.1";
|
||||
|
||||
public static readonly bool IsPortable = File.Exists("makeportable");
|
||||
|
||||
|
@@ -8,7 +8,7 @@ Edit layout & design
|
||||
chylex
|
||||
|
||||
[version]
|
||||
1.2.3
|
||||
1.2.4
|
||||
|
||||
[website]
|
||||
https://tweetduck.chylex.com
|
||||
|
@@ -23,6 +23,8 @@ enabled(){
|
||||
|
||||
this.firstTimeLoad = null;
|
||||
|
||||
var me = this;
|
||||
|
||||
// modal dialog loading
|
||||
$TDP.readFileRoot(this.$token, "modal.html").then(contents => {
|
||||
this.htmlModal = contents;
|
||||
@@ -137,8 +139,6 @@ enabled(){
|
||||
};
|
||||
|
||||
// modal dialog setup
|
||||
var me = this;
|
||||
|
||||
var updateKey = function(key, value){
|
||||
me.config[key] = value;
|
||||
|
||||
@@ -238,7 +238,12 @@ enabled(){
|
||||
});
|
||||
|
||||
// THEMES
|
||||
let selectedTheme = me.config.themeOverride || TD.settings.getTheme();
|
||||
let selectedTheme = TD.settings.getTheme();
|
||||
|
||||
if (selectedTheme === "dark" && me.config.themeOverride === "black"){
|
||||
selectedTheme = me.config.themeOverride;
|
||||
}
|
||||
|
||||
modal.find("[data-td-theme='"+selectedTheme+"']").prop("checked", true);
|
||||
|
||||
modal.find("[data-td-theme]").change(function(){
|
||||
@@ -379,22 +384,26 @@ enabled(){
|
||||
this.css.insert("html[data-td-font] { font-size: "+this.config.fontSize+" !important }");
|
||||
this.css.insert(".avatar { border-radius: "+this.config.avatarRadius+"% !important }");
|
||||
|
||||
let currentTheme = TD.settings.getTheme();
|
||||
|
||||
if (currentTheme === "dark" && this.config.themeOverride){
|
||||
currentTheme = this.config.themeOverride;
|
||||
}
|
||||
|
||||
let notificationScrollbarColor = null;
|
||||
|
||||
if (this.config.themeColorTweaks){
|
||||
switch(TD.settings.getTheme()){
|
||||
case "dark":
|
||||
if (this.config.themeOverride === "black"){
|
||||
this.css.insert(".app-content, .app-columns-container { background-color: #444448 !important }");
|
||||
this.css.insert(".column-drag-handle { opacity: 0.5 !important }");
|
||||
this.css.insert(".column-drag-handle:hover { opacity: 1 !important }");
|
||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover), .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover) { background-color: #666 !important }");
|
||||
notificationScrollbarColor = "666";
|
||||
}
|
||||
else{
|
||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-track, .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-track { border-left-color: #14171A !important }");
|
||||
}
|
||||
switch(currentTheme){
|
||||
case "black":
|
||||
this.css.insert(".app-content, .app-columns-container { background-color: #444448 !important }");
|
||||
this.css.insert(".column-drag-handle { opacity: 0.5 !important }");
|
||||
this.css.insert(".column-drag-handle:hover { opacity: 1 !important }");
|
||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover), .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-thumb:not(:hover) { background-color: #666 !important }");
|
||||
notificationScrollbarColor = "666";
|
||||
break;
|
||||
|
||||
case "dark":
|
||||
this.css.insert(".scroll-styled-v:not(.scroll-alt)::-webkit-scrollbar-track, .scroll-styled-h:not(.scroll-alt)::-webkit-scrollbar-track { border-left-color: #14171A !important }");
|
||||
break;
|
||||
|
||||
case "light":
|
||||
@@ -539,10 +548,11 @@ ${iconData.map(entry => `#tduck .icon-${entry[0]}:before{content:\"\\f0${entry[1
|
||||
document.head.appendChild(this.icons);
|
||||
}
|
||||
|
||||
if (this.config.themeOverride === "black"){
|
||||
if (currentTheme === "black"){
|
||||
$TDP.readFileRoot(this.$token, "theme.black.css").then(contents => {
|
||||
if (this.theme){
|
||||
this.theme.element.innerHTML = contents;
|
||||
TD.settings.setTheme("dark"); // forces refresh of notification head tag
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -598,9 +608,9 @@ ${this.config.revertIcons ? `
|
||||
#tduck .icon-user-dd:before{content:"\\f01a";font-family:_of!important}
|
||||
` : ``}
|
||||
|
||||
${this.config.themeOverride === "black" ? `
|
||||
${currentTheme === "black" ? `
|
||||
html.dark a, html.dark a:hover, html.dark a:focus, html.dark a:active { color: #8bd }
|
||||
.btn-neutral-positive { color: #8bd !important }
|
||||
#tduck-show-thread { color: #8bd !important }
|
||||
.quoted-tweet { border-color: #292f33 !important }
|
||||
` : ``}
|
||||
|
||||
|
@@ -290,7 +290,7 @@ html.dark .app-nav-tab{color:#8899A6}
|
||||
html.dark .app-nav-tab:hover{color:#fff}
|
||||
html.dark .app-nav-tab.is-selected{color:#292f33}
|
||||
html.dark .app-nav-tab.is-selected:hover{color:#292f33}
|
||||
html.dark .attach-compose-buttons .tweet-button{background-color:#485865}
|
||||
html.dark .attach-compose-buttons .tweet-button{background-color:#485865!important}
|
||||
html.dark .with-nav-border-t:before{border-top:1px solid #777}
|
||||
html.dark .app-search-input,html.dark .app-search-fake{background-color:#14171A;color:#aab8c2;box-shadow:inset 0 1px 1px rgba(17,17,17,0.5)}
|
||||
html.dark .app-search-input::-webkit-input-placeholder{color:#aab8c2}
|
||||
@@ -849,3 +849,4 @@ html.dark .DrawerModal{color:#14171A}
|
||||
/* fixes */
|
||||
html.dark .app-search-fake{border-color:transparent}
|
||||
html.dark .spinner-small,html.dark .spinner-large{filter:grayscale(80%)brightness(93%)}
|
||||
html.dark .tweet>.color-twitter-blue{color:#8bd!important}
|
||||
|
@@ -8,7 +8,7 @@ Templates
|
||||
chylex
|
||||
|
||||
[version]
|
||||
1.0.3
|
||||
1.0.4
|
||||
|
||||
[website]
|
||||
https://tweetduck.chylex.com
|
||||
|
@@ -34,7 +34,7 @@ enabled(){
|
||||
|
||||
// button
|
||||
|
||||
var buttonHTML = '<button class="manage-templates-btn needsclick btn btn-on-blue full-width txt-left margin-b--12 padding-v--9"><i class="icon icon-bookmark"></i><span class="label padding-ls">Manage templates</span></button>';
|
||||
var buttonHTML = '<button class="manage-templates-btn needsclick btn btn-on-blue full-width txt-left margin-b--12 padding-v--6 padding-h--12"><i class="icon icon-bookmark"></i><span class="label padding-ls">Manage templates</span></button>';
|
||||
|
||||
this.prevComposeMustache = TD.mustaches["compose/docked_compose.mustache"];
|
||||
TD.mustaches["compose/docked_compose.mustache"] = TD.mustaches["compose/docked_compose.mustache"].replace('<div class="js-tweet-type-button">', buttonHTML+'<div class="js-tweet-type-button">');
|
||||
|
@@ -199,7 +199,7 @@
|
||||
html.find(".js-user-actions-menu").parent().remove();
|
||||
html.find(".account-bio").removeClass("padding-t--5").css("padding-top", "2px");
|
||||
}
|
||||
else if (type.startsWith("favorite") || type.startsWith("retweet")){
|
||||
else if ((type.startsWith("favorite") || type.startsWith("retweet")) && tweet.isAboutYou()){
|
||||
html.children().first().addClass("td-notification-padded");
|
||||
}
|
||||
else if (type.includes("list_member")){
|
||||
|
@@ -38,7 +38,7 @@
|
||||
/* Square-ify stuff */
|
||||
/********************/
|
||||
|
||||
.btn, .mdl, .mdl-content, .popover, .lst-modal, .tooltip-inner {
|
||||
button, .btn, .mdl, .mdl-content, .popover, .lst-modal, .tooltip-inner {
|
||||
border-radius: 1px !important;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
border-radius: 1px !important;
|
||||
}
|
||||
|
||||
.btn-compose, .app-search-fake, .app-search-input, .compose-text-container, .compose-reply-tweet, .compose-message-recipient-input-container, .compose-message-recipient, .compose-media-bar-holder, .media-grid-container, .js-quote-tweet-holder, .detail-view-inline-text {
|
||||
.tweet-button, .app-search-fake, .app-search-input, .compose-text-container, .compose-reply-tweet, .compose-message-recipient-input-container, .compose-message-recipient, .compose-media-bar-holder, .media-grid-container, .js-quote-tweet-holder, .detail-view-inline-text {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
@@ -54,6 +54,40 @@
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
/***********************************/
|
||||
/* Revert various design decisions */
|
||||
/***********************************/
|
||||
|
||||
button {
|
||||
font-weight: normal !important;
|
||||
}
|
||||
|
||||
.tweet-button:not(:hover) {
|
||||
background-color: #2B7BB9 !important;
|
||||
border-color: #2B7BB9 !important;
|
||||
}
|
||||
|
||||
#tduck .js-compose-scroller button > i {
|
||||
font-size: 20px !important;
|
||||
vertical-align: -4px !important;
|
||||
}
|
||||
|
||||
.js-show-drawer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.js-show-drawer .icon-compose {
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.js-show-drawer span::before {
|
||||
content: "New ";
|
||||
}
|
||||
|
||||
.js-account-safeguard-checkbox, .js-account-safeguard-checkbox label {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
/***********************/
|
||||
/* Hide TweetDeck logo */
|
||||
/***********************/
|
||||
@@ -118,19 +152,19 @@ html[data-td-theme='dark'] .stream-item:not(:hover) .js-user-actions-menu {
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
.stream-item[data-key^="favorite"] .item-img, .stream-item[data-key^="retweet"] .item-img {
|
||||
.stream-item[data-key^="favorite"] .has-source-avatar .item-img, .stream-item[data-key^="retweet"] .has-source-avatar .item-img {
|
||||
position: absolute;
|
||||
left: 21px;
|
||||
top: 48px;
|
||||
width: 0 !important;
|
||||
}
|
||||
|
||||
.stream-item[data-key^="favorite"] .activity-header > .nbfc, .stream-item[data-key^="retweet"] .activity-header > .nbfc {
|
||||
.stream-item[data-key^="favorite"] .has-source-avatar > .nbfc, .stream-item[data-key^="retweet"] .has-source-avatar > .nbfc {
|
||||
margin-left: 46px;
|
||||
line-height: unset !important;
|
||||
}
|
||||
|
||||
.stream-item[data-key^="favorite"] .activity-header > .nbfc > .avatar, .stream-item[data-key^="retweet"] .activity-header > .nbfc > .avatar {
|
||||
.stream-item[data-key^="favorite"] .has-source-avatar > .nbfc > .avatar, .stream-item[data-key^="retweet"] .has-source-avatar > .nbfc > .avatar {
|
||||
position: absolute;
|
||||
margin-left: -34px;
|
||||
}
|
||||
@@ -183,6 +217,12 @@ a[data-full-url] {
|
||||
vertical-align: -10% !important;
|
||||
}
|
||||
|
||||
#tduck .nav-user-info .hide-condensed {
|
||||
/* move login account info */
|
||||
margin: 0px !important;
|
||||
padding-left: 2px !important;
|
||||
}
|
||||
|
||||
html[data-td-font='smallest'] .sprite-verified-mini {
|
||||
/* fix cut off badge when zoomed in */
|
||||
width: 13px !important;
|
||||
@@ -230,6 +270,16 @@ html[data-td-font='smallest'] .tweet-detail-wrapper .badge-verified:before {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
#tduck .js-follow-button .icon-follow {
|
||||
/* follow icon is too small which makes it aliased and misaligned */
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
.js-follow-button .following-text, .js-follow-button .unfollow-text {
|
||||
/* unfollow button has a border for some reason */
|
||||
border-width: 0 !important;
|
||||
}
|
||||
|
||||
/***************************************************************/
|
||||
/* Fix glaring visual issues that twitter hasn't fixed yet smh */
|
||||
/***************************************************************/
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#define MyAppName "TweetDuck"
|
||||
#define MyAppPublisher "chylex"
|
||||
#define MyAppURL "https://tweetduck.chylex.com"
|
||||
#define MyAppShortURL "https://td.chylex.com"
|
||||
#define MyAppExeName "TweetDuck.exe"
|
||||
|
||||
#define MyAppVersion GetFileVersion("..\bin\x86\Release\TweetDuck.exe")
|
||||
@@ -71,7 +72,7 @@ begin
|
||||
UpdatePath := ExpandConstant('{param:UPDATEPATH}')
|
||||
ForceRedistPrompt := ExpandConstant('{param:PROMPTREDIST}')
|
||||
|
||||
if (TDGetNetFrameworkVersion() < 379893) and (MsgBox('{#MyAppName} requires .NET Framework 4.5.2 or newer,'+#13+#10+'please download it from {#MyAppURL}'+#13+#10+#13+#10'Do you want to proceed with the setup anyway?', mbCriticalError, MB_YESNO or MB_DEFBUTTON2) = IDNO) then
|
||||
if (TDGetNetFrameworkVersion() < 379893) and (MsgBox('{#MyAppName} requires .NET Framework 4.5.2 or newer,'+#13+#10+'please visit {#MyAppShortURL} for a download link.'+#13+#10+#13+#10'Do you want to proceed with the setup anyway?', mbCriticalError, MB_YESNO or MB_DEFBUTTON2) = IDNO) then
|
||||
begin
|
||||
Result := False;
|
||||
Exit;
|
||||
@@ -93,7 +94,7 @@ begin
|
||||
WizardForm.DirEdit.Text := UpdatePath;
|
||||
end;
|
||||
|
||||
if idpFilesCount <> 0 then
|
||||
if (idpFilesCount <> 0) then
|
||||
begin
|
||||
idpDownloadAfter(wpReady);
|
||||
end;
|
||||
@@ -105,16 +106,11 @@ begin
|
||||
Result := (PageID = wpSelectDir) and (UpdatePath <> '')
|
||||
end;
|
||||
|
||||
{ Check for an old TweetDeck profile and show a warning before installation, and install VC++ if downloaded. }
|
||||
{ Install VC++ if downloaded. }
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
begin
|
||||
if CurStep = ssInstall then
|
||||
begin
|
||||
if DirExists(ExpandConstant('{localappdata}\twitter\TweetDeck')) then
|
||||
begin
|
||||
MsgBox('Detected a profile from an old TweetDeck installation, you may uninstall the old client to free up some space.', mbInformation, MB_OK)
|
||||
end;
|
||||
|
||||
TDInstallVCRedist();
|
||||
end;
|
||||
end;
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#define MyAppName "TweetDuck"
|
||||
#define MyAppPublisher "chylex"
|
||||
#define MyAppURL "https://tweetduck.chylex.com"
|
||||
#define MyAppShortURL "https://td.chylex.com"
|
||||
#define MyAppExeName "TweetDuck.exe"
|
||||
|
||||
#define MyAppVersion GetFileVersion("..\bin\x86\Release\TweetDuck.exe")
|
||||
@@ -57,7 +58,7 @@ begin
|
||||
UpdatePath := ExpandConstant('{param:UPDATEPATH}')
|
||||
ForceRedistPrompt := ExpandConstant('{param:PROMPTREDIST}')
|
||||
|
||||
if (TDGetNetFrameworkVersion() < 379893) and (MsgBox('{#MyAppName} requires .NET Framework 4.5.2 or newer,'+#13+#10+'please download it from {#MyAppURL}'+#13+#10+#13+#10'Do you want to proceed with the setup anyway?', mbCriticalError, MB_YESNO or MB_DEFBUTTON2) = IDNO) then
|
||||
if (TDGetNetFrameworkVersion() < 379893) and (MsgBox('{#MyAppName} requires .NET Framework 4.5.2 or newer,'+#13+#10+'please visit {#MyAppShortURL} for a download link.'+#13+#10+#13+#10'Do you want to proceed with the setup anyway?', mbCriticalError, MB_YESNO or MB_DEFBUTTON2) = IDNO) then
|
||||
begin
|
||||
Result := False;
|
||||
Exit;
|
||||
@@ -79,7 +80,7 @@ begin
|
||||
WizardForm.DirEdit.Text := UpdatePath;
|
||||
end;
|
||||
|
||||
if idpFilesCount <> 0 then
|
||||
if (idpFilesCount <> 0) then
|
||||
begin
|
||||
idpDownloadAfter(wpReady);
|
||||
end;
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#define MyAppName "TweetDuck"
|
||||
#define MyAppPublisher "chylex"
|
||||
#define MyAppURL "https://tweetduck.chylex.com"
|
||||
#define MyAppShortURL "https://td.chylex.com"
|
||||
#define MyAppExeName "TweetDuck.exe"
|
||||
|
||||
#define MyAppID "8C25A716-7E11-4AAD-9992-8B5D0C78AE06"
|
||||
@@ -148,13 +149,7 @@ begin
|
||||
idpAddFile('https://github.com/{#MyAppPublisher}/{#MyAppName}/releases/download/'+TDGetAppVersionClean()+'/'+TDGetFullDownloadFileName(), ExpandConstant('{tmp}\{#MyAppName}.Full.exe'));
|
||||
end;
|
||||
|
||||
if TDGetNetFrameworkVersion() >= 379893 then
|
||||
begin
|
||||
Result := True;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if (MsgBox('{#MyAppName} requires .NET Framework 4.5.2 or newer,'+#13+#10+'please download it from {#MyAppURL}'+#13+#10+#13+#10'Do you want to proceed with the setup anyway?', mbCriticalError, MB_YESNO or MB_DEFBUTTON2) = IDNO) then
|
||||
if (TDGetNetFrameworkVersion() < 379893) and (MsgBox('{#MyAppName} requires .NET Framework 4.5.2 or newer,'+#13+#10+'please visit {#MyAppShortURL} for a download link.'+#13+#10+#13+#10'Do you want to proceed with the setup anyway?', mbCriticalError, MB_YESNO or MB_DEFBUTTON2) = IDNO) then
|
||||
begin
|
||||
Result := False;
|
||||
Exit;
|
||||
@@ -275,8 +270,15 @@ end;
|
||||
{ Return whether the version of the installed libcef.dll library matches internal one. }
|
||||
function TDIsMatchingCEFVersion: Boolean;
|
||||
var CEFVersion: String;
|
||||
var TmpTDVersion: String;
|
||||
|
||||
begin
|
||||
if GetVersionNumbersString(UpdatePath+'TweetDuck.exe', TmpTDVersion) and (CompareStr(TmpTDVersion, '1.13.0.0') = 0) then
|
||||
begin
|
||||
Result := False;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
Result := (GetVersionNumbersString(UpdatePath+'libcef.dll', CEFVersion) and (CompareStr(CEFVersion, '{#CefVersion}') = 0))
|
||||
end;
|
||||
|
||||
|
Reference in New Issue
Block a user