checkoff 0.172.0 → 0.174.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 460a9e7a6cd597a95b8a4d1510776d842433d53d77e12995eaafd14473edaa8d
4
- data.tar.gz: cb639a1b164c6029577a13643a0688bd68ce09b507b5ad1c962ad9a060e41f55
3
+ metadata.gz: afd1b7c89796ffabac7ae3776f3b1f55abd649355d30b2f7c05865d359841116
4
+ data.tar.gz: 7970b7b72e38f600ff5ff03f21ab8a97fc6e4f583d963422c79006541758344b
5
5
  SHA512:
6
- metadata.gz: 2279da4267561c7b61865047ecb2646de2d288954e792496272cf5c1ddf3408b59c333498120bb29a86c43f534b029632f9ad5b38bc1e51c0fccdfb17da47fa9
7
- data.tar.gz: 2dba9cc6ad70e3c8b682c760d7f8b9a20698362d06bca51487e4475ed39265db86589c28ff1596926495c5e7de7554871e9d85f124ff7a79d5bf2f220568df12
6
+ metadata.gz: ffb5752c0a924f5fb4942a44a22e0778fe0c129048f7a893ae899b73731f13f5f5890671c018322d98057f82d284c35febe3ca92dbb7d34247dbc7b68d8bc5b4
7
+ data.tar.gz: 4456268d46432f2187d4984b1df16711bcc1fc82efb3c07f899225d21df897308cc6f5d206a8ff3b8859dfc4d9feaaed60925f697a1fa8646fdd0a45385b81d2
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.172.0)
15
+ checkoff (0.174.0)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -141,7 +141,10 @@ module Checkoff
141
141
  options[:completed_since] = '9999-12-01' if only_uncompleted
142
142
  options[:project] = project_gid
143
143
  options[:options][:fields] += extra_fields
144
- client.tasks.find_all(**options)
144
+ # Note: 30 minute cache time on a raw Enumerable from SDK gives
145
+ # 'Your pagination token has expired' errors. So we go ahead
146
+ # and eagerly evaluate here so we can enjoy the cache.
147
+ client.tasks.find_all(**options).to_a
145
148
  end
146
149
  cache_method :tasks_from_project_gid, REALLY_LONG_CACHE_TIME
147
150
 
@@ -129,8 +129,11 @@ module Checkoff
129
129
  options = projects.task_options
130
130
  options[:options][:fields] += extra_fields
131
131
  options[:completed_since] = '9999-12-01' if only_uncompleted
132
+ # Note: 30 minute cache time on a raw Enumerable from SDK gives
133
+ # 'Your pagination token has expired' errors. So we go ahead
134
+ # and eagerly evaluate here so we can enjoy the cache.
132
135
  client.tasks.get_tasks(section: section.gid,
133
- **options)
136
+ **options).to_a
134
137
  end
135
138
  cache_method :tasks, REALLY_LONG_CACHE_TIME
136
139
 
@@ -22,7 +22,7 @@ module Checkoff
22
22
  MINUTE = 60
23
23
  HOUR = MINUTE * 60
24
24
  DAY = 24 * HOUR
25
- REALLY_LONG_CACHE_TIME = HOUR
25
+ REALLY_LONG_CACHE_TIME = MINUTE * 30
26
26
  LONG_CACHE_TIME = MINUTE * 15
27
27
  SHORT_CACHE_TIME = MINUTE * 5
28
28
 
@@ -116,15 +116,31 @@ module Checkoff
116
116
  section_name: :unspecified,
117
117
  only_uncompleted: true,
118
118
  extra_fields: [])
119
+ task_gid = gid_for_task(workspace_name, project_name, section_name, task_name)
120
+
121
+ return nil if task_gid.nil?
122
+
123
+ task_by_gid(task_gid, only_uncompleted: only_uncompleted, extra_fields: extra_fields)
124
+ end
125
+ cache_method :task, LONG_CACHE_TIME
126
+
127
+ # @param workspace_name [String]
128
+ # @param project_name [String, Symbol]
129
+ # @param section_name [String, nil, Symbol]
130
+ # @param task_name [String]
131
+ #
132
+ # @return [String, nil]
133
+ # @sg-ignore
134
+ def gid_for_task(workspace_name, project_name, section_name, task_name)
119
135
  # @sg-ignore
120
136
  t = tasks(workspace_name,
121
137
  project_name,
122
138
  section_name: section_name,
123
- only_uncompleted: only_uncompleted,
124
- extra_fields: extra_fields)
125
- t.find { |task| task.name == task_name }
139
+ only_uncompleted: false)
140
+ task_for_gid = t.find { |task| task.name == task_name }
141
+ task_for_gid&.gid
126
142
  end
127
- cache_method :task, SHORT_CACHE_TIME
143
+ cache_method :gid_for_task, REALLY_LONG_CACHE_TIME
128
144
 
129
145
  # Pull a specific task by GID
130
146
  #
@@ -296,7 +312,7 @@ module Checkoff
296
312
  #
297
313
  # @return [Enumerable<Asana::Resources::Task>]
298
314
  def tasks(workspace_name, project_name,
299
- only_uncompleted:, extra_fields:, section_name: :unspecified)
315
+ only_uncompleted:, extra_fields: [], section_name: :unspecified)
300
316
  if section_name == :unspecified
301
317
  project = projects.project_or_raise(workspace_name, project_name)
302
318
  projects.tasks_from_project(project,
@@ -3,5 +3,5 @@
3
3
  # Command-line and gem client for Asana (unofficial)
4
4
  module Checkoff
5
5
  # Version of library
6
- VERSION = '0.172.0'
6
+ VERSION = '0.174.0'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.172.0
4
+ version: 0.174.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz