Imports System.Net
Public Class FavoriteQueue
- Private Shared _instance As New FavoriteQueue
- Public Shared ReadOnly Property GetInstance As FavoriteQueue
- Get
- Return _instance
- End Get
- End Property
+ Implements IList(Of Long)
- Public FavoriteCache As New List(Of Long)
+ 'Private Shared _instance As New FavoriteQueue
+ 'Public Shared ReadOnly Property GetInstance As FavoriteQueue
+ ' Get
+ ' Return _instance
+ ' End Get
+ 'End Property
- Public Sub Add(ByVal stsId As Long)
- If Not FavoriteCache.Contains(stsId) Then
- FavoriteCache.Add(stsId)
- End If
- End Sub
+ Private tw As Twitter
+ Private FavoriteCache As New List(Of Long)
Public Sub AddRange(ByVal stsIds As IEnumerable(Of Long))
FavoriteCache.AddRange(stsIds)
End Sub
- Public Sub Remove(ByVal stsId As Long)
- FavoriteCache.Remove(stsId)
- End Sub
-
- Public Sub FavoriteCacheAdd(ByVal statusId As Long, ByVal res As HttpStatusCode, Optional ByRef isMsg As Boolean = True)
- 'If Not SettingInfo.Instance.IsUseFavoriteQueue Then Exit Sub
- Select Case res
- Case HttpStatusCode.BadGateway, HttpStatusCode.BadRequest, HttpStatusCode.ServiceUnavailable, HttpStatusCode.InternalServerError, HttpStatusCode.RequestTimeout
- isMsg = False
- FavoriteCache.Add(statusId)
- End Select
- End Sub
+ 'Public Sub FavoriteCacheAdd(ByVal statusId As Long, ByVal res As HttpStatusCode, Optional ByRef isMsg As Boolean = True)
+ ' 'If Not SettingInfo.Instance.IsUseFavoriteQueue Then Exit Sub
+ ' Select Case res
+ ' Case HttpStatusCode.BadGateway, HttpStatusCode.BadRequest, HttpStatusCode.ServiceUnavailable, HttpStatusCode.InternalServerError, HttpStatusCode.RequestTimeout
+ ' isMsg = False
+ ' FavoriteCache.Add(statusId)
+ ' End Select
+ 'End Sub
Public Sub FavoriteCacheStart()
If Not FavoriteCache.Count = 0 Then
Dim _cacheList As New List(Of Long)(FavoriteCache)
- AllClear()
+ Me.Clear()
Parallel.ForEach(Of Long)(_cacheList, New Action(Of Long)(Sub(stsId As Long)
- TweenMain.GetInstance.TwitterInstance.PostFavAdd(stsId)
+ tw.PostFavAdd(stsId)
End Sub))
End If
End Sub
- Public ReadOnly Property Count As Integer
+ Public Sub Add(ByVal item As Long) Implements System.Collections.Generic.ICollection(Of Long).Add
+ If Not Me.Contains(item) Then
+ FavoriteCache.Add(item)
+ End If
+ End Sub
+
+ Public Sub Clear() Implements System.Collections.Generic.ICollection(Of Long).Clear
+ FavoriteCache.Clear()
+ FavoriteCache.TrimExcess()
+ End Sub
+
+ Public Function Contains(ByVal item As Long) As Boolean Implements System.Collections.Generic.ICollection(Of Long).Contains
+ FavoriteCache.Contains(item)
+ End Function
+
+ Public Sub CopyTo(ByVal array() As Long, ByVal arrayIndex As Integer) Implements System.Collections.Generic.ICollection(Of Long).CopyTo
+ FavoriteCache.CopyTo(array, arrayIndex)
+ End Sub
+
+ Public ReadOnly Property Count As Integer Implements System.Collections.Generic.ICollection(Of Long).Count
Get
Return FavoriteCache.Count
End Get
End Property
- Public Sub AllClear()
- FavoriteCache.Clear()
- FavoriteCache.TrimExcess()
- End Sub
+ Public ReadOnly Property IsReadOnly As Boolean Implements System.Collections.Generic.ICollection(Of Long).IsReadOnly
+ Get
+ Return False
+ End Get
+ End Property
+
+ Public Function Remove(ByVal item As Long) As Boolean Implements System.Collections.Generic.ICollection(Of Long).Remove
+ Return FavoriteCache.Remove(item)
+ End Function
+
+ Public Function GetEnumerator() As System.Collections.Generic.IEnumerator(Of Long) Implements System.Collections.Generic.IEnumerable(Of Long).GetEnumerator
+ Return FavoriteCache.GetEnumerator()
+ End Function
+ Public Function GetEnumerator1() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
+ Return Me.GetEnumerator
+ End Function
- Public Function Contains(stsId As Long) As Boolean
- Return FavoriteCache.Contains(stsId)
+ Public Function IndexOf(ByVal item As Long) As Integer Implements System.Collections.Generic.IList(Of Long).IndexOf
+ Return FavoriteCache.IndexOf(item)
End Function
+ Public Sub Insert(ByVal index As Integer, ByVal item As Long) Implements System.Collections.Generic.IList(Of Long).Insert
+ FavoriteCache.Insert(index, item)
+ End Sub
+
+ Default Public Property Item(ByVal index As Integer) As Long Implements System.Collections.Generic.IList(Of Long).Item
+ Get
+ Return FavoriteCache(index)
+ End Get
+ Set(ByVal value As Long)
+ FavoriteCache(index) = value
+ End Set
+ End Property
+
+ Public Sub RemoveAt(ByVal index As Integer) Implements System.Collections.Generic.IList(Of Long).RemoveAt
+ FavoriteCache.RemoveAt(index)
+ End Sub
+
+ Public Sub New(ByVal twitter As Twitter)
+ Me.tw = twitter
+ End Sub
End Class
End Sub
Private Sub SendRequest(ByVal info As Dictionary(Of String, String), ByVal userId As Long)
-#If UA <> "True" Then
- Exit Sub
-#Else
If userId = 0 Then Exit Sub
If Me._SessionFirst = 0 Then Me.Init()
End If
Me.GetAsync(params, New Uri(GA_GIF_URL))
-
-#End If
End Sub
Private Sub GetAsync(ByVal params As Dictionary(Of String, String), ByVal url As Uri)
更新履歴
-==== Ver 1.0.5.0(2011/**/**)
+==== Ver 1.0.5.0(2011/9/10)
* NEW: TINAMIの画像プレビューに対応。小説もプレビュー対象になります。(thx @tinami_info,API実装担当者様)
* NEW: Twitter純正画像投稿に対応
* NEW: Listの発言にRTを含むかどうかの設定を追加。初期設定では従来通り含めません。
* NEW: API情報ダイアログに画像投稿関係の制限値も表示するように
- * NEW: 広告枠追加。上部区切り線をマウスで動かせます。
+ * NEW: アカウント切り替え追加。切り替え後、Listsは取得失敗になるので注意。
* CHG: 翻訳機能を復活(1.0.4.0より)。使用する場合は設定画面より翻訳言語の再設定をお願いします。
* CHG: URLの自動短縮をいったん使用不可とした(t.co対応のため)。メニューやショートカットからの手動短縮は可能です。
* CHG: PublicSearch,DM以外ではEntitiesよりURL情報を読み取るように
* CHG: 返信先(in_reply_to_status_id)つき画像投稿が出来るように修正
* CHG: 検索の取得件数を個別で指定していなければTL取得件数で動作するよう変更
* CHG: Shift-Spaceでの選択履歴さかのぼりの履歴を1時間ごとに2000件上限で古いものを削除するよう変更
- * CHG: 投稿時にTwitterから不正な応答が変える問題に対処
+ * CHG: 投稿時にTwitterから不正な応答が返った場合の表示を変更
* FIX: 翻訳のショートカットキーが無効になっていたバグを修正
* FIX: 英大文字のハッシュタグが記録されなかったバグを修正
* FIX: Ctrl-Eでurlを開く際、idnの場合に例外発生する問題に対処
* FIX: OS復帰時にPublicSearch,UserTimeline,Listsの更新が行われていなかったのを修正
* FIX: UserStreamの再接続に時間がかかる場合があったので修正
* FIX: ハッシュタグ固定が日本語ハッシュタグに対して動作していなかったバグを修正
+ * FIX: Listsや検索タブの発言をRetweet後、すぐにタブを閉じると例外発生するバグ修正
==== Ver 1.0.4.0(2011/07/30)
* CHG: 画面下部の余白を削除
* CHG: アカウント認証を簡略化(認証開始→ログイン&アプリ許可→Finish)
Private WithEvents _hookGlobalHotkey As HookGlobalHotkey
Public Sub New()
- _instance = Me
_hookGlobalHotkey = New HookGlobalHotkey(Me)
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
ShowUserTimeline()
End Sub
- Private Shared _instance As TweenMain
-
- Public Shared Function GetInstance() As TweenMain
- Return _instance
- End Function
-
Public ReadOnly Property FavEventChangeUnread As Boolean
Get
Return SettingDialog.FavEventUnread
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
- <DefineConstants>UA="True"</DefineConstants>
+ <DefineConstants>UA="False"</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DebugSymbols>true</DebugSymbols>
<PlatformTarget>x86</PlatformTarget>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
- <DefineConstants>UA="True"</DefineConstants>
+ <DefineConstants>UA="False"</DefineConstants>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
Private minDirectmessage As Long = Long.MaxValue
Private minDirectmessageSent As Long = Long.MaxValue
+ 'Private favQueue As FavoriteQueue
+
Private twCon As New HttpTwitter
Public Event UserIdChanged()
If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return ""
- If FavoriteQueue.GetInstance.Contains(id) Then FavoriteQueue.GetInstance.Remove(id)
+ 'If Me.favQueue Is Nothing Then Me.favQueue = New FavoriteQueue(Me)
+
+ 'If Me.favQueue.Contains(id) Then Me.favQueue.Remove(id)
Google.GASender.GetInstance().TrackEventWithCategory("post", "favorites", Me.UserId)
Dim res As HttpStatusCode
Try
res = twCon.CreateFavorites(id, content)
Catch ex As Exception
- FavoriteQueue.GetInstance.Add(id)
+ 'Me.favQueue.Add(id)
Return "Err:->FavoriteQueue:" + ex.Message + "(" + GetCurrentMethod.Name + ")"
End Try
Select Case res
Case HttpStatusCode.OK
Twitter.AccountState = ACCOUNT_STATE.Valid
- FavoriteQueue.GetInstance.FavoriteCacheStart()
+ 'Me.favQueue.FavoriteCacheStart()
If Not _restrictFavCheck Then Return ""
Case HttpStatusCode.Unauthorized
Twitter.AccountState = ACCOUNT_STATE.Invalid
Return "Err:Forbidden(" + GetCurrentMethod.Name + ")"
Else
If errMsg.Contains("It's great that you like so many updates") Then
- FavoriteQueue.GetInstance.Add(id)
+ 'Me.favQueue.Add(id)
Return "Err:->FavoriteQueue:" + errMsg
End If
Return "Err:" + errMsg
End If
Case HttpStatusCode.BadGateway, HttpStatusCode.ServiceUnavailable, HttpStatusCode.InternalServerError, HttpStatusCode.RequestTimeout
- FavoriteQueue.GetInstance.Add(id)
+ 'Me.favQueue.Add(id)
Return "Err:->FavoriteQueue:" + res.ToString + "(" + GetCurrentMethod.Name + ")"
Case Else
Return "Err:" + res.ToString + "(" + GetCurrentMethod.Name + ")"
If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return ""
- If FavoriteQueue.GetInstance.Contains(id) Then
- FavoriteQueue.GetInstance.Remove(id)
- Return ""
- End If
+ 'If Me.favQueue Is Nothing Then Me.favQueue = New FavoriteQueue(Me)
+
+ 'If Me.favQueue.Contains(id) Then
+ ' Me.favQueue.Remove(id)
+ ' Return ""
+ 'End If
Google.GASender.GetInstance().TrackEventWithCategory("post", "destroy_favorites", Me.UserId)
Dim res As HttpStatusCode
Else
post.FavoritedCount += 1
If Not TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).Contains(post.StatusId) Then
- If TweenMain.GetInstance().FavEventChangeUnread AndAlso post.IsRead Then
+ If AppendSettingDialog.Instance.FavEventUnread AndAlso post.IsRead Then
post.IsRead = False
End If
TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).Add(post.StatusId, post.IsRead, False)
Else
- If TweenMain.GetInstance().FavEventChangeUnread Then
+ If AppendSettingDialog.Instance.FavEventUnread Then
TabInformations.GetInstance.SetRead(False, TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).TabName, TabInformations.GetInstance.GetTabByType(TabUsageType.Favorites).IndexOf(post.StatusId))
End If
End If